一个C小程序

xujiwen55 2006-04-09 01:42:17
有个题
F(0)=1
F(1)=1
F(2)=F(1)+F(0)
. .
. .
F(N)=F(N-1)+F(N-2) ; N>=2 ;
用 C 写出 F(N)

我自已写了下,你们看看能否实现:
int n
int f(n)
{
if n<2 then
return 1
else
{ f(n)
{f(n)=f(n-1)+(n-2)
}
return f(n)
}
}
...全文
76 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
postren 2006-04-09
  • 打赏
  • 举报
回复
递归肯定是效率低的算法

int fnew(const int n)
{
int f0 = 1, f1 = 1;
int f2 = 1;
for (int i = 2; i < n + 1; ++i)
{
f2 = f0 + f1;
f0 = f1;
f1 = f2;
}
return f2;
}
yuanchuang 2006-04-09
  • 打赏
  • 举报
回复
if ((n == 0) && (n == 1))
改成if ((n == 0) || (n == 1))
yuanchuang 2006-04-09
  • 打赏
  • 举报
回复
晕,你怎么发了两贴啊?我还以为我回错贴了呢!
你应该把那一贴删掉,然后把分加到这一贴上来。
yuanchuang 2006-04-09
  • 打赏
  • 举报
回复
我重写了一个,用迭代法(没有测试,但应该能用):
int f(int n)
{
int a, b, c, i;
if ((n == 0) && (n == 1))
return 1;
for (b = 1, c = 1, i = 1; i < n; ++i)
{
a = b;
b = c;
c = a + b;
}
return c;
}

其实很多书上讲到这个例子的。
YF2006 2006-04-09
  • 打赏
  • 举报
回复
int f(int n)
{
int z;
if (n==0||n==1) z=1;
else z=f(n-1)+f(n-2);
return z;
}
main()
{
int n,y;
y=f(n);
printf("f(n)=%d\n",y);
}
postren 2006-04-09
  • 打赏
  • 举报
回复
int f(const int n)
{
if (n<2)
return 1;
else
return f(n-1)+f(n-2);
}
liunian812 2006-04-09
  • 打赏
  • 举报
回复
int n
f(0)=1;
f(1)=1;
scanf("%d",&n);
int f(n)
{
while(n>=2)
{f(n)=f(n-1)+(n-2);
}
return f(n);
}

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧