当 n = 1 ;f(1) = 1; {1}
当 n = 2;f(2) = 2; {11,2}
当 n = 3;f(3) = 3; {111,12,21}
....
n = 50 ,可以从48走2上来,或者从49走1上来。
f(50) = f(49) + f(48);
类比有
f(n) = f(n -1) + f(n - 2)
使用递归可以这样:
double fun(int n)
{
if(n == 1)
{
return 1;
}
else if(n == 2)
{
return 2;
}
else
{
return fun(n-1) + fun(n-2);
}
}
由于递归效率较低,我们可以转换成循环:
double a[50];
a[0] = 1;
a[1] = 2;
for(int i = 2 ; i < 50; i++ )
{
a[i] = a[i -1] + a[i - 2];
}