#include <stdio.h>
double fib1(int n); //非递归生成下标为n的斐波那契数列元素
double fib2(int n); //递归生成下标为n的斐波那契数列元素
int main()
{
int n;
printf("请输入斐波那契数列项数:");
scanf("%d", &n);
/printf("动态规划方法求解:第 %d 项斐波那契数列数值是 %.0f \n", n, fib1(n));/
printf("分治法求解:第 %d 项斐波那契数列数值是 %.0f \n", n, fib2(n));
return 0;
}
//动态规划方法求解
double fib1(int n)
{
int i = 0;
double a = 1;
double b = 1;
double result = 0;
if (n <= 0)
{
return 0;
}
else if (n <= 2)
{
return 1;
}
else
{
for (i = 3; i <= n; i++)
{
result = a + b;
a = b;
b = result;
}
return result;
}
}
//分治方法求解
double fib2(int n)
{
if (n <= 0)
{
return 0;
}
else if (n <= 2)
{
return 1; //递归终止条件
}
else
{
return fib2(n - 1) + fib2(n - 2); //递归
}
}
斐波那契数列(分治策略)
这个代码如何加断点,求解斐波那契数列的第 40 项