利用递归求斐波纳契数列的和

简介: 递归的方法更加简单,更容易理解

之前我们可以用循环去求斐波纳契数列的和

1. #include<stdio.h>
2. int fib(int n)
3. {
4.     int a=1,b=1,c=1;
5.     while(n>2)
6.     {
7.         c=a+b;
8.         a=b;
9.         b=c;
10.         n--;
11.     }
12.     return c;
13. 
14. }
15. int main()
16. {
17.     int n=1;
18.     printf("请输入阶数\n");
19.     scanf("%d",&n);
20.     printf("%d\n",fib(n));
21.     return 0;
22. }

学了递归,之后我们就可以利用数学公式,写出递归去求斐波纳契数列的和

1. #include<stdio.h>
2. int fib(int n)
3. {
4. 
5.     if(n<=2)
6.     {
7.         return 1;
8.     }
9.     else
10.         return fib(n-2)+fib(n-1);
11. }
12. int main()
13. {
14.     int n=1;
15.     printf("请输入阶数\n");
16.     scanf("%d",&n);
17.     printf("%d\n",fib(n));
18.     return 0;
19. }

对比两个两个代码,可知递归的方法更加简单,更容易理解



相关文章
顺序表应用7:最大子段和之分治递归法
顺序表应用7:最大子段和之分治递归法
|
编译器
位运算、递推与递归
位运算、递推与递归
49 0
|
机器学习/深度学习 算法 Java
从斐波那契数列到递归
大家好,我是王有志。今天我们要通过经典数学问【题斐波那契数列】来学习非常重要的编程技巧:递归。
158 1
从斐波那契数列到递归
递归和非递归分别实现求第n个斐波那契数
递归和非递归分别实现求第n个斐波那契数
73 0
字符串逆序(递归和非递归实现)
给连两个指针,left放在字符串左侧,right放在最后一个有效字符位置。 交换两个指针位置上的字符
|
机器学习/深度学习 人工智能 算法
『递归』汉诺塔和全排列
使用递归编写一个程序实现汉诺塔问题,要求在输入圆盘数量之后,输出圆盘的移动步骤,输出格式示例如下: 第1步:1号盘从A柱移至B柱第2步:2号盘从A柱移至C柱
226 0
|
机器学习/深度学习
用递归和非递归实现斐波那契数列
用递归和非递归实现斐波那契数列
200 0
用递归和非递归实现斐波那契数列
|
算法
数列最值的递归解法
在看到辗转相除法的递归解法后,不禁想到涉及比较的分治算法、三目运算符和递归简直就是绝配,一眨眼,脑海中就迸出了数列最小值的递归解法,每一个数都与后面数组的最小值相比较,思路有了,动手吧。 //辗转相除法    int gcd_division(int a,int b)   {       return b==0?a:gcd_division(b,a%b);    }     一、思路与改进     将数组每一个元素与该元素后数组最小值相比较,最后一个数组元素返回自身,即可得到整个数组的最小值。
1072 0

热门文章

最新文章