1,1,2,3,5,8,13 求第7个是几
算法:
a,b
a=b
b=a+b
法一:
>>> def fib(n):
... if n==1 or n==2:
... return 1
... a=1
... b=1
... for i in range(n-2):
... temp=a+b
... a=b
... b=temp
... return b
...
>>> print(fib(7))
13
算法:
1.两个数a=1,b=1
2.做个计算a+b(temp)
3.a的值变为b
4.b的值变为temp
5.重复以上过程
>>> def fib(n):
... if n==1 or n==2:
... return 1
... a=1
... b=1
... for i in range(n):
... if i==0 or i==1:
... continue #执行到这就不执行了
... temp=a+b
... a=b
... b=temp
... return b
...
>>> print(fib(7))
13
怎么用递归做:
算法:求第N项=n-1项+n-2项
n=1 or n=2,return 1
#写一下结束的条件,然后自己调用自己
递归的返回值:是从最下层开始向上返回
1,1,2,3,5,8,13,
得出13 ,要先从1+2开始,最底层算完往上返回
>>> def fib(n):
... if n==1 or n==2:
... return 1
... return fib(n-1)+fib(n-2)
...
>>> print(fib(7))
13
打印出所有的斐波那契数列
>>> def fib(n):
... if n==1 or n==2:
... return 1
... temp=fib(n-1)+fib(n-2)
... return temp
...
>>> for i in range(1,8):
... print(fib(i))
...
1
1
2
3
5
8
13
>>>