程序开发斐波那契数列解析。
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。
n<=39
思路:斐波那契可以用递归做,但是容易出现栈溢出,可以把递归改成尾递归的形式;可以用循环做。
//递归 class Solution { public: int Fibonacci(int n) { if(n==0 || n==1) return n; return Fibonacci(n-1)+Fibonacci(n-2); } }; //尾递归 class Solution { public: int Fibonacci1(int n,int n1=0,int n2=1) { if(n==0 || n==1) return n2; return Fibonacci1(n-1,n2,n1+n2); } int Fibonacci(int n) { if(n==0 || n==1) return n; return Fibonacci1(n); } }; //循环 class Solution { public: int Fibonacci(int n) { int t1=0; int t2=1; while(n--) { t2=t2+t1; t1=t2-t1; } return t1; } };
python
python不存在尾递归,没有优化。
# -*- coding:utf-8 -*- class Solution: def Fibonacci(self, n): n0=0 n1=1 for i in range(n): n1=n0+n1 n0=n1-n0 return n0 # write code here