大多教科书中都用此题来讲述递归的解决方式可见其重要性,首先要明白什么是斐波那锲数,递归即每次将这个数的前一位和前一位的前一位传入函数进行计算,代码和逻辑方面都很好理解,下面我们用递归和非递归(循环)两种方法实现
代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int Fib1(int n) //递归的方法
{
if (n <= 2)
return 1;
else
return Fib1(n - 1) + Fib1(n - 2);
}
int Fib2(int n) //非递归的方法
{
int i = 0;
int f1 = 1;
int f2 = 1;
int f3 = 0;
if (n <= 2) //前两个数字都是1返回1即可
{
return 1;
}
else
{
for (i = 3; i < n; i++) //循环交换值来输出第n个斐波那锲数
{
f3 = f1 + f2;
f1 = f2;
f2 = f3;
}
}
}
int main()
{
int n = 0;
printf("请输入你要找哪个数字 \n");
scanf("%d", &n);
int fib1 = Fib1(n);
printf("%d\n", fib1);
int fib2 = Fib2(n);
printf("%d\n", fib2);
system("pause");
return 0;
}
转载于:https://blog.51cto.com/14239789/2377692