斐波那契数列的通项公式在C语言中如何表达?
f=(1/sqrt(5))*(((1+sqrt(5))/2)^(n+1)-((1-sqrt(5))/2)^(n+1));为什么总是不认呢,说invalidoperandt...
f=(1/sqrt(5))*(((1+sqrt(5))/2)^(n+1)-((1-sqrt(5))/2)^(n+1));为什么总是不认呢,说invalid operand to binary
展开
3个回答
展开全部
An=An-1+An-2
在C语言中,根据算法实现不同,可以有很多种表达方式。以计算斐波那契第N项值为例,说明如下。
一、以数组方式实现:
int fn(int n)
{
int *a,i,r;
a=(int *)malloc(sizeof(int)*n);//分配动态数组。
a[0]=1;
a[1]=1;//初始化前两项。
for(i = 2; i<n; i ++)
{
a[i]=a[i-1]+a[i-2];//这里就是通项公式的一种实现形式。
}
r = a[n-1];//保存结果
free(a);//释放动态数组
return r;//返回结果值。
}
二、以递归函数形式:
int fn(int n)
{
if(n == 0 || n == 1) return 1;//前两项固定值。
return fn(n-1)+fn(n-2);// 通过递归调用实现通项公式。
}
三、注意事项:
1、方法有很多,不可能穷举完成,写代码时要灵活使用。
2、例子中以int保存,限于整型范围,计算很大值时会出现溢出。 根据实际需要选择类型。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |