我是靠谱客的博主 开朗帆布鞋,这篇文章主要介绍斐波那契数列-数组和递归-C语言,现在分享给大家,希望可以做个参考。

兔子在出生两个月后,就有繁殖能力,一对兔子每一个月能生成一对小兔子来,假设所有的兔子都不死,那么一年之后可以繁殖多少对兔子?

这个问题就是 典型的 斐波那契数列
斐波那契数列的特点是: 前面相邻两项之和,构成了后一项.

这里分别用数组和递归两种方式实现斐波那契数列的算法

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/* 斐波那契 数组和递归实现 打印前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语言内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部