Pythonプログラミングトレーニング1:Fibonacci
5495 ワード
ターゲット:n番目のフィボナッチ額を返す
f i b ( n ) = { 0 , i f n = 0 1 , i f n = 1 f i b ( n − 1 ) + f i b ( n − 2 ) , i f n > 1 fib(n)=\begin{cases} 0, & if\n = 0\\1, & if\n = 1\\fib(n-1) + fib(n-2), & if\n > 1\end{cases} fib(n)=⎩⎪⎨⎪⎧0,1,fib(n−1)+fib(n−2),if n=0if n=1if n>1
ヒントヒント:再帰:操作の繰り返し:レイヤごとに呼び出され、操作が1回行われます.
送信形式:
解決策
テスト結果
f i b ( n ) = { 0 , i f n = 0 1 , i f n = 1 f i b ( n − 1 ) + f i b ( n − 2 ) , i f n > 1 fib(n)=\begin{cases} 0, & if\n = 0\\1, & if\n = 1\\fib(n-1) + fib(n-2), & if\n > 1\end{cases} fib(n)=⎩⎪⎨⎪⎧0,1,fib(n−1)+fib(n−2),if n=0if n=1if n>1
ヒントヒント:再帰:操作の繰り返し:レイヤごとに呼び出され、操作が1回行われます.
送信形式:
def fib(n):
...
print(fib(1))
print(fib(6))
解決策
def fib(n):
if n==0:
return 0
elif n==1:
return 1
else:
return fib(n-1) + fib(n-2)
>>> fib(5)
5
>>> fib(6)
8
>>> fib(2)
1
>>> fib(3)
2
>>>
テスト結果
def testFib(f,n):
a = []
for i in range(n):
a.append(f(i))
return a
>>> testFib(fib,10)
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
>>>