K阶斐波那契数列
来源:互联网 发布:淘宝号安全风险查询 编辑:程序博客网 时间:2024/06/06 18:29
K阶斐波那契数列
定义:第k和k+1项为1,前k - 1项为0,从k项之后每一项都是前k项的和
例如:k = 3:,0 0 1 1 2 4 7 13
13 = 2 * 7 - 1
7 = 2 * 4 - 1
4 = 2 * 2 - 0
后一项等于 前一项的2倍 减去 前k+1项。这就是后面递归的原理
C语言实现:
能用递归和3种循环都实现是很不错的
#include <stdio.h>#include <stdlib.h>#define N 9//要计算的项#define K 3//阶次int Fib_1(int k, int m){//K阶斐波那契数列的前K-1项均为0,第k项为1,以后的每一项都是前K项的和 //本算法计算k阶斐波那契数列的第k项-递归实现 if (m < k) return 0; else if ((m == k) || (m == k + 1)) return 1; else return 2 * Fib_1(k, m - 1) - Fib_1(k, m - k - 1);//乘2了}int Fib_2(int k, int m){//K阶斐波那契数列的前K-1项均为0,第k项为1,以后的每一项都是前K项的和 //本算法计算k阶斐波那契数列的第k项-循环实现 int i; int F[N]; for (i = 0; i < k + 1; i++) { if (i < k - 1) { F[i] = 0;//前k - 1项为0 } else { F[i] = 1;//k和k+1项为1 } //printf("F[%d] = %d\n", i, F[i]); } for (; i < N; i++) { F[i] = 2 * F[i - 1] - F[i - k - 1];//计算的原理,大家一定要懂计算后一项的算法 //printf("F[%d] = %d\n", i, F[i]); } return F[m - 1];//数组的下标要减去1,第9项 = F[8]}int main(void){ //自己测试下吧 int m = Fib_2(K, N); printf("m = %d\n", m); system("pause"); return 0;}
0 0
- K阶斐波那契数列
- K阶斐波那契数列
- K阶斐波那契数列
- k阶斐波那契数列
- k阶斐波那契数列
- k阶斐波那契数列
- 【数据结构】求K阶斐波那契数列
- k阶斐波那契数列的c语言程序
- C语言——求k阶斐波那契数列的第m项
- 解斐波那契数列
- 求斐波那契数列
- 求斐波那契数列
- 递推递归专题 K 加强的斐波那契数列
- 递推递归练习K加强斐波那契数列
- 链家笔试:斐波那契数列中的第k个数
- 斐波那契数列数列计算
- 裴波那契数列
- 斐波那契数列
- JDBC对数据库时间的操作
- 起底半成品生鲜行业之殇,下一步如何破局?
- iOS开发系列--让你的应用“动”起来--iOS动画
- 深度学习之常见tricks
- ZooKeeper 分布式锁
- K阶斐波那契数列
- VS2015集成QT5.6.0
- 友善之臂开发板启动脚本配置以及fa-network-service后台服务对网络的配置
- Python利用pdb单步调试
- Hibernate与各种数据库连接的配置
- jsp 自定义标签的编写
- WebCollector爬取百度搜索引擎
- 栈区,堆区,全局区,文字常量去,程序代码区
- Prestashop使用心得