故事来源: 一天,皇帝骑在马上,率领着文武百官,在号兵鼓手、马队的簇拥下,浩浩荡荡向比萨市费波纳茨的居所进发。弗德烈皇帝向费波纳茨提出了这样一个问题:如果一对兔子从第二个月开始,每月可产一对兔子,试问一年后这个特定的区域里共有多少对兔子?
费波纳茨顺口回答了皇帝的问题:共有144对,并把他的计算方法说了出来——1,1,2,3,5,8,13,21,34,55,89,144,这就是费波纳茨数列的原版。根据这种计算方法,可以把这个数列无限量地扩大下去,……55,89,144,233,377,610。费波纳茨道出了一个自然地数列,后人把它叫做费波纳茨数列。
斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……。这个数列从第三项开始,每一项都等于前两项之和。它的通项公式为:(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}(又叫“比内公式”,是用无理数表示有理数的一个范例。)(√5表示根号5)
方法一:循环实现
int fun(int n) {
int sum = 0, tmp1=1, tmp2 = 1;
if (n < 2)
return 1;
for(int i = 2; i <= n; i++) {
sum = tmp1 + tmp2;
tmp2 = tmp1;
tmp1 = sum;
}
return sum;
}
方法二:递归实现
int fun(int n) {
int sum = 0;
if (n < 2)
return 1;
for(int i = 2; i <= n; i++) {
sum = fun(i-2) + fun1(i-1);
}
return sum;
}