MOOC清华《程序设计基础》第6章:三种递推方法求兔子数列问题(斐波那契数列)
来源:互联网 发布:课堂直播软件 编辑:程序博客网 时间:2024/06/05 07:29
//递推算法的常用步骤://第一步:设定递推初值;//第二步:依公式递推(常用循环实现)。//递推算法的优点://1,递推公式往往比通项公式容易得到;//2,计算机非常擅长递推公式的重复计算。 #include <iostream>using namespace std;int main(){int N;cout << "请输入月份N:";cin >> N;int Fibonacci_1(int n);int Fibonacci_2(int n);int Fibonacci_3(int n);cout << "第1种方法所求第" << N << "个月的兔子对数是:" << Fibonacci_1(N) << endl;cout << "第2种方法所求第" << N << "个月的兔子对数是:" << Fibonacci_2(N) << endl;cout << "第3种方法所求第" << N << "个月的兔子对数是:" << Fibonacci_3(N) << endl; return 0;}int Fibonacci_1(int n)//方法一:按大小兔子分别递推 {int *small = new int[n];int *big = new int[n];int fib = 0;small[0] = 1;big[0] = 0;for(int i = 1; i < n; i++){small[i] = big[i - 1];big[i] = small[i - 1] + big[i - 1];}fib = small[n - 1] + big[n - 1];delete[] small;delete[] big;return fib;}int Fibonacci_2(int n)//方法二:按总数递推 {int *total = new int[n];int fib = 0;total[0] = 1;total[1] = 1;for(int i = 2; i < n; i++)total[i] = total[i - 1] + total[i - 2];fib = total[n - 1];delete[] total;return fib;}int Fibonacci_3(int n)//方法三:不用数组递推 {int dang_yue;int qian_yue = 1;int shang_yue = 1;for(int i = 2; i < n; i++){dang_yue = qian_yue + shang_yue;qian_yue = shang_yue;shang_yue = dang_yue;} //注意赋值的顺序,以免把还需要的有用的值给覆盖掉了return dang_yue; }
测试结果:
阅读全文
0 0
- MOOC清华《程序设计基础》第6章:三种递推方法求兔子数列问题(斐波那契数列)
- 兔子问题(斐波那契数列)
- 兔子问题--斐波那契数列
- 斐波那契数列:兔子问题
- MOOC清华《程序设计基础》第5章第1题:判断数列的对称性
- 斐波那契数列【黄金分割数列】-兔子问题
- MOOC清华《程序设计基础》第6章:橱窗插花问题(动态规划,输出方法一)
- MOOC清华《程序设计基础》第6章:橱窗插花问题(动态规划,输出方法二)
- 斐波那契数列(兔子问题)的变形
- java兔子问题(斐波那契数列)
- 兔子产子问题(斐波那契数列)
- 斐波那契数列(兔子数列)
- MOOC清华《程序设计基础》第6章第2题:求f(a,b)问题(动态规划)
- MOOC清华《程序设计基础》第6章第2题:求f(a,b)问题(递归法)
- 基础算法题----兔子问题(斐波那契数列)
- 扩展的斐波那契数列:求兔子个数
- oc 实现斐波那契数列-- 求兔子数量
- 斐波那契数列求兔子总数
- 时间类型转换
- Java 循环结构
- NYOJ 15-括号匹配(二)(经典区间DP)
- Oracle中TO_DATE TO_CHAR格式
- CDH5.X完全卸载步骤
- MOOC清华《程序设计基础》第6章:三种递推方法求兔子数列问题(斐波那契数列)
- 关于4. 3 DESIGN: SPAM 审核问题的解决方法
- poj 2528 特殊离散化+线段树
- java中父类的私有属性能不能被继承
- linux fcitx
- Intent
- sizeForItemAtIndexPath
- 第二次面试
- HPU绝对值排序