//递归#include<stdio.h>intFibonacci(int n){if(n <=2){return1;//n<=2时的情况}else{returnFibonacci(n -1)+Fibonacci(n -2);//n>2时的情况}}intmain(){int n =0;scanf("%d",&n);int ret =Fibonacci(n);printf("%d", ret);return0;}
执行情况
如果事情能轻松结束自然是好,但同时我们也注意到这段代码的效率之差,具体如何差呢,用一段代码来告诉你
递归的效率代码实现
#include<stdio.h>int count =0;//创建全局变量count用来计数intFibonacci(int n){if(n ==3){
count++;//每当计算第三个数时,count++}if(n <=2){return1;//n<=2时的情况}else{returnFibonacci(n -1)+Fibonacci(n -2);//n>2时的情况}}intmain(){int n =0;scanf("%d",&n);int ret =Fibonacci(n);printf("%d\n", ret);printf("第三个数计算了%d遍\n", count);return0;}
//迭代#include<stdio.h>intFibonacci(int n){int a =1;int b =1;int c =1;while(n >=3){
c = a + b;
a = b;
b = c;
n--;}return c;}intmain(){int n =0;scanf("%d",&n);int ret =Fibonacci(n);printf("第%d个Fibonacci数列为%d\n",n, ret);return0;}