斐波那契数列-数组和递归-C语言
来源:互联网 发布:mac推出键 编辑:程序博客网 时间:2024/05/17 23:05
兔子在出生两个月后,就有繁殖能力,一对兔子每一个月能生成一对小兔子来,假设所有的兔子都不死,那么一年之后可以繁殖多少对兔子?
这个问题就是 典型的 斐波那契数列
斐波那契数列的特点是: 前面相邻两项之和,构成了后一项.这里分别用数组和递归两种方式实现斐波那契数列的算法
/*斐波那契 数组和递归实现打印前45位斐波那契数列的时候可以看到 数组的运算效率比递归要高许多*/#include<stdio.h>//斐波那契数列-数组实现, 打印前n位的斐波那契列数 void fbiArray(int n){ int i; int arr[n]; arr[0] = 0; arr[1] = 1; printf("%d %d ", arr[0], arr[1]); for(i = 2; i < n; i++){ arr[i] = arr[i - 1] + arr[i - 2]; printf("%d ", arr[i]); } }//斐波那契数列-递归实现 int fbiFunction(int i){ if(i < 2){ return i==0 ? 0 : 1; } return fbiFunction(i - 1) + fbiFunction(i - 2);}int main(void){ printf("\n 1.斐波那契数列-数组实现 \n 2.斐波那契数列-递归实现\n 0.退出\n"); int option = 1, n, i; while(option){ scanf("%d", &option); switch(option){ case 1: printf("请输入斐波那契列数\n"); scanf("%d", &n); fbiArray(n); printf("\n"); break; case 2: printf("请输入斐波那契列数\n"); scanf("%d", &n); for(i = 0; i < n; i++){ printf("%d ", fbiFunction(i)); } printf("\n"); break; case 0: return 0; } } return 0;}
从运行的时间上来看, 当要输出前n位斐波那契数列,n比较大时,
使用数组实现 运行效率是比较高的
使用递归方式 运行效率就大大折扣了递归使用的是选择结构,而迭代使用的是循环结构.
递归能使程序的结构更加清晰,更加简洁,更容易让人理解,从而减少读懂代码的时间,
但大量的递归调用会建立函数的副本,会消耗大量的时间和内存.迭代不不需要反复调用函数和占用额外的内存.
2 0
- 斐波那契数列-数组和递归-C语言
- C语言实现斐波那契数列递归和非递归算法
- C语言递归方法实现斐波那契数列
- C语言实现斐波那契数列的两种方法(递归和迭代)
- C语言斐波那契数列的四种实现方式—递归,迭代,数组,队列
- 递归和斐波那契数列
- 斐波那契数列的非递归c语言实现以及斐波那契数列的应用
- C语言 斐波那契数列
- c语言斐波那契数列
- C语言-斐波那契数列
- c语言:斐波那契数列
- 【C++】斐波那契数列前N项的和递归与非递归算法
- 斐波那契数列-数组与递归方式-C描述
- 斐波那契数列递归和非递归
- 斐波那契数列递归和非递归算法
- 递归和非递归实现斐波那契数列
- 斐波那契数列---递归和递归优化
- C语言不用递归(使用栈)实现斐波那契数列练习
- 解决密码框显示和掩藏密码
- 大小端问题
- [USACO Open08]牛的邻居Cow Neighborhoods解题报告
- maven 添加自定义jar 命令行
- 网络故障:DNS ???
- 斐波那契数列-数组和递归-C语言
- Android—解决重写TextView设置字体大量引用后卡屯的问题
- 授权远程连接MySQL(Linux)
- 投简历时的五个准备八大纪律
- 8种Nosql数据库系统对比
- C ++ 虚函数 (转)
- 如何解决Django 1.8在migrate时失败?
- 黑马程序员---java中如何实现线程范围内共享数据
- 杂七杂八的分享