1.17 一直k阶斐波那契序列的定义为
试编写求k阶斐波那契序列的第m项值的函数算法,k和m均以值调用的形式在函数参数列表中出现。
解法1:
#include <stdio.h>
//求nOrder阶斐波那契数列的第nNumber项
int Fibonacci(int nOrder, int nNumber)
{
if (nNumber <= nOrder-2)
{
return 0;
}
else if (nNumber==nOrder-1 || nNumber==nOrder)
{
return 1;
}
else
{
return 2*Fibonacci(nOrder, nNumber-1) - Fibonacci(nOrder, nNumber-nOrder-1);
}
}
int main(void)
{
int nOrder = 0, nNumber = 0;
printf("请输入斐波那契数列的阶数和取值的项数(用空格隔开):");
int nRead = scanf("%d%d", &nOrder, &nNumber);
while (2 != nRead)
{
printf("输入错误,请重新输入!\n");
while (getchar() != '\n')
{
continue;
}
nRead = scanf("%d%d", &nOrder, &nNumber);
}
int nResult = Fibonacci(nOrder, nNumber);
printf("计算结果是:%d\n", nResult);
return 0;
}