概述
兔子在出生两个月后,就有繁殖能力,一对兔子每一个月能生成一对小兔子来,假设所有的兔子都不死,那么一年之后可以繁殖多少对兔子?
这个问题就是 典型的 斐波那契数列
斐波那契数列的特点是: 前面相邻两项之和,构成了后一项.这里分别用数组和递归两种方式实现斐波那契数列的算法
/*
斐波那契 数组和递归实现
打印前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比较大时,
使用数组实现 运行效率是比较高的
使用递归方式 运行效率就大大折扣了递归使用的是选择结构,而迭代使用的是循环结构.
递归能使程序的结构更加清晰,更加简洁,更容易让人理解,从而减少读懂代码的时间,
但大量的递归调用会建立函数的副本,会消耗大量的时间和内存.迭代不不需要反复调用函数和占用额外的内存.
最后
以上就是开朗帆布鞋为你收集整理的斐波那契数列-数组和递归-C语言的全部内容,希望文章能够帮你解决斐波那契数列-数组和递归-C语言所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复