仅仅表达思想递归:
斐波那契数列 1 1 2 3 5 8 13 21 34 55
#include<stdio.h>
int count = 0;
int Fib(int n)
{
if (n == 4)
count++;//计算重复度,重复度过大,时间浪费
if (n <= 2)
{
return 1;
}
else
return Fib(n - 1) + Fib(n - 2);//效率低是因为重复很多
}
int main()
{
//第n个斐波那契数
int n = 0;
int fib = Fib(n);
scanf("%d", &n);
printf("%d\n", Fib);
printf("count=%d\n", count);
return 0;
}
//仅仅表达思想非递归:
#include<stdio.h>
int Fib(int n)
{
int a = 1;
int b = 1;
int c = 0;
while (n >= 3)
{
c = a + b;
a = b;
b = c;
n--;//进来几次,算几次
}
return c;
}
int main()
{
//第n个斐波那契数
int n = 0;
int fib=Fib(n);
scanf("%d", &n);
printf("%d\n", Fib);
return 0;
}