遞迴入門(6-10)

遞迴入門(6-10)

icode比賽已經開放到140關,快接近初賽的尾聲了,出現了較難的遞迴的關卡。

level 6

遞迴入門(6-10)

# 將遞迴函式中的額外行動補充完整

def recur(n):

# Base case

if n

return

# fill in the actions

Dev。step(2)

Dev。turnRight()

Dev。step(2)

Dev。turnLeft()

# recursion

recur(n-1)

recur(8)

本關卡中是用遞迴函式實現了迴圈的功能,完成 了8次迴圈,與下面的迴圈程式碼是相同的效果。

for i in range(8):

Dev。step(2)

Dev。turnRight()

Dev。step(2)

Dev。turnLeft()

level 7

遞迴入門(6-10)

# 在遞迴函式中,如果遞迴呼叫部分處於遞迴函式的末尾,就叫做尾遞迴。

# 每個迴圈都可以用尾遞迴來表示,相應的,每個尾遞迴都可以用迴圈來表示。

def recur(n):

# Base case

if n

return

# actions

Flyer[n]。step(1)

recur(n-1)

# recursion

recur(6)

Dev。step(8)

尾遞迴的使用,可以用迴圈來完成。

level 8

遞迴入門(6-10)

# 相信你已經掌握了遞迴的使用方法,補全下面的程式碼,完成任務吧!

def recur(n):

# Complete the code

if n

return

Flyer[n]。step(7-n)

recur(n-1)

recur(6)

Dev。step(14)

與上一關類似的操作,加入了飛板,並且飛板的步數也發生變化。

LEVEL 9

遞迴入門(6-10)

# 相信你已經掌握了遞迴的使用方法,補全下面的程式碼,完成任務吧!

def recur(n):

# Base case

if n

return

# Finish the actions

Flyer。step(2)

Dev。turnRight()

Dev。step(2)

Dev。step(-2)

Dev。turnLeft()

Dev。step(2)

# recursion

recur(n - 1)

recur(6)

迴圈用遞迴來表達

LEVEL 10

遞迴入門(6-10)

# 這是一個全新的遞迴挑戰!請記住,在開始遞迴之前,Dev可以先轉向哦!

def recur(n):

if n

return

Spaceship。step(2)

Dev。step(n)

Dev。step(-n*2)

Dev。step(n)

recur(n-2)

Dev。turnRight()

recur(8)

此關卡也是尾遞迴

TAG: DevSTEPrecur遞迴DeF