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;
}