斐波那契数列的通项公式在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 展开
 我来答
风若远去何人留
2017-04-14 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450097
专业C/C++软件开发

向TA提问 私信TA
展开全部

斐波那契数列在数学上的通项公式

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保存,限于整型范围,计算很大值时会出现溢出。 根据实际需要选择类型。

超激稀有_夜子
2018-10-19
知道答主
回答量:11
采纳率:0%
帮助的人:7526
展开全部
c语言中的^表示异或,不是幂的意思。算幂可以用循环或者pow函数,手写快速幂会更快一些。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a_v_a_l_o_n
2011-10-14 · 超过20用户采纳过TA的回答
知道答主
回答量:105
采纳率:0%
帮助的人:66.9万
展开全部
^ <---这个不对
你查一下库函数里面找找你需要的功能
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式