1.题目
递归和非递归分别实现求第n个斐波那契数。
2.程序代码
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <windows.h>
int fib_num2(int num)//用递归实现求第n个斐波那契数列
{
if (num <= 2)
{
return 1;
}
return fib_num2(num - 1) + fib_num2(num - 2);
}
int fib_num1(int num)//用非递归实现求第n个斐波那契数列
{
int i = 0;
int arr[50] = {1, 1};//定义一个长度为50的数组来存放斐波那契数列,
//并给前两位初始化为1
for (i = 0; i < num; i++)
{
if (i >= 2)
{
arr[i] = arr[i - 1] + arr[i - 2];
}
}
return arr[num - 1];
}
int main()
{
int n = 0;
int ret = 0;//存放自定义函数的返回值
printf("please input a number about Fibonacci numbers:");
scanf("%d", &n);
printf("%d\n", ret = fib_num1(n));
printf("%d\n", ret = fib_num2(n));
system("pause");
return 0;
}