递归代码:
int Func(int x)
{
if (x <= 2)
return 1;
else
return Func(x - 1) + Func(x - 2);
}
int main()
{
int n = 0;
scanf("%d", &n);
int r = Func(n);
printf("%d", r);
return 0;
}
总体思路:
第三个斐波那契数等于前两个的和。
ps:使用递归求第n个斐波那契数列只能求第40个以内的,倘若超过40,效率会底下,因为计算机需要计算的内容实在太多了。
递归代码:
int Func(int x)
{
int a = 1;
int b = 1;
int c = 1;
while (x >= 3)
{
c = a + b;
a = b;
b = c;
x--;
}
return c;
}
int main()
{
int n = 0;
scanf("%d", &n);
int r = Func(n);
printf("%d", r);
return 0;
}
根据上图进行分析
1.如果不使用递归,那么就会想到去使用迭代,通常思路就是一个一个往后加(而递归是一个一个往前找),所以我设置三个参数a,b,c。
2.进入循环,每次c都等于a和b的和,然后把b的值赋给a,c的值赋给b,目的是为下一次循环做准备,而循环的条件必须是要查找的数大于等于3。