斐波那契数列
是指1,1,2,3,5,8,13,,,,直到无穷, 这个数列从第3项开始,每一项都等于前两项和。
斐波那契相关问题有:
1.青蛙跳台阶问题
2.兔子繁殖问题
这两个问题其实本质和斐波那契数列很相似,只要搞懂斐波那契数列,这两个问题也就很容易解决了。
递归是什么?
1.递归就是函数调用自身。
2.使用递归要注意的是在一个递归中,必须有一个明确的递归结束条件,称为递归出口。
递归原理:
1.递推:把要计算多次的问题的求解推到最简问题。
2.回归:当获得这个最简问题的解,然后逐步返回,得到最终问题结果。
递归的优点:
代码简洁清晰,可读性良好,节省了代码用量。
递归缺点:
1.递归中很多计算都是重复的,由于其本质是把一个问题分解成两个或者多个小问题,多个小问题存在相互重叠的部分,则存在重复计算,
2.调用栈可能会溢出,其实每一次函数调用会在内存栈中分配空间,而每个进程的栈的容量是有限的,当调用的层次太多时,就会超出栈的容量,从而导致栈溢出。
求斐波那契数列的第N个数的非递归算法
#include<stdio.h>
#include<windows.h>
int main()
{
int a = 1, b = 1, s = 0,n=0;
scanf_s("%d", &n);
if (n == 1 && n == 2)
{
printf(" 1" );
}
while (n-2)
{
s = a + b;
a = s;
b = a;
n--;//1
}
printf("%d", s);
system("pause");
return 0;
}
递归算法:
int fib(int n)
{
if (n <= 2)
{
return 1;
}
else
return fib(n - 1) + fib(n - 2);
}