题目:递归和非递归分别实现求第n个斐波那契数
代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
//递归实现求第n个斐波那契数
int Fib(int n)
{
if (n == 1 || n == 2)
{
return 1;
}
return Fib(n - 1) + Fib(n - 2);
}
//非递归实现求第n个斐波那契数
int Fib(int n)
{
int num;
int num1 = 1;
int num2 = 1;
if (n == 1 || n == 2)//d第一项和第二项的值都为1
{
num = 1;
}
else
{
for (int i = 3; i <= n; i++)
{
num = num1 + num2;//从第三项起,每一项的值都等于前两项值相加的和
num1 = num2;
num2 = num;
}
}
return num;
}
int main()
{
int n = 0;
scanf("%d", &n);
int num = Fib(n);
printf("%d", num);
system("pause");
return 0;
}
运行结果: