1 1 2 3 5 8 13 21...
即每一项都是前两项之和的数列
经典解法是使用递归
不过递归的效率太低,推荐如下代码,只需2个变量存值,效率高
int fibonacci(int n){ int a=1,b=1; for(int i=2;i<n;i++){ //交换a和b,更新a的值 a=a^b; b=a^b; a=a^b; //更新b的值 b=a+b; } return b; }
(假设n>0,故没有对n<=0的情况做处理)
int fibonacci(int n){ int a=1,b=1; for(int i=2;i<n;i++){ //交换a和b,更新a的值 a=a^b; b=a^b; a=a^b; //更新b的值 b=a+b; } return b; }