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

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

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

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. }

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



相关文章
|
编译器
位运算、递推与递归
位运算、递推与递归
58 0
|
机器学习/深度学习 算法 Java
从斐波那契数列到递归
大家好,我是王有志。今天我们要通过经典数学问【题斐波那契数列】来学习非常重要的编程技巧:递归。
205 1
从斐波那契数列到递归
递归和非递归分别实现求第n个斐波那契数
递归和非递归分别实现求第n个斐波那契数
83 0
|
机器学习/深度学习 人工智能 算法
『递归』汉诺塔和全排列
使用递归编写一个程序实现汉诺塔问题,要求在输入圆盘数量之后,输出圆盘的移动步骤,输出格式示例如下: 第1步:1号盘从A柱移至B柱第2步:2号盘从A柱移至C柱
237 0
【递归】斐波那契数列第n个数
递归、递推计算斐波那契数列第n项的值: 1 #include 2 long long fact(int n); //【递推】计算波那契数列第n个数 3 long long fact2(int n);//【递归】 4 int main(int argc, char *arg...
1130 1
|
算法
数列最值的递归解法
在看到辗转相除法的递归解法后,不禁想到涉及比较的分治算法、三目运算符和递归简直就是绝配,一眨眼,脑海中就迸出了数列最小值的递归解法,每一个数都与后面数组的最小值相比较,思路有了,动手吧。 //辗转相除法    int gcd_division(int a,int b)   {       return b==0?a:gcd_division(b,a%b);    }     一、思路与改进     将数组每一个元素与该元素后数组最小值相比较,最后一个数组元素返回自身,即可得到整个数组的最小值。
1082 0
递归与动态规划
凡是递归的过程,都可以化成树的过程。递归就是问题变成子问题求解的过程。动态规划暂时没明白,好像是需要一张动态规划表,是根据递归搞出来的。 问题1:开始有一头母牛,母牛每年会生一只母牛,新出生的母牛成长三年后也能每年生一只母牛,假设牛都不会死。
701 0
|
机器学习/深度学习
递归解决斐波那契数列
1、什么是递归?   递归:递归是方法定义调用方法本身的现象。递归举例如下: &lt;span style="font-size:14px;"&gt;public class DiGuiDemo { //递归方法举例 public void show() { show(); } } &lt;/span&gt; 2、递归的注意事项? (1)递归一定要有出口
1668 0
|
C++ 缓存
careercup-递归和动态规划 9.11
9.11 给定一个布尔表达式,由0、1、&、|和^等符号组成,以及一个想要的布尔结果result,实现一个函数,算出有几种括号的放法可使该表达式得出result值。 解法: 跟其他递归问题一样,此题的关键在于找出问题与子问题之间的关系。
728 0