算法求解(2问)

borland_boy 2003-07-08 12:52:33
数列的定义为:它的第1项和第2项均为1,以后各项为其前两项之和。

第N 项用FIB(N)表示为

FIB(N)={1 (N=1或2)
FIB(N-1)+FIB (n-2)(n>=2)

(1).FIB(N)的递归算法和非递归算法两中算法如何写?

(2).还有他们的时间及空间复杂度?
...全文
67 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yhz 2003-07-09
  • 打赏
  • 举报
回复
是菲波那契数列吧?

非递归算法的时间复杂度是O(n), 空间复杂度是O(1)。
递归算法的时间复杂度也是O(n) 空间复杂度是O(n)。
borland_boy 2003-07-09
  • 打赏
  • 举报
回复
递归算法的时间复杂度是多少 空间复杂度是多少

非递归算法的时间复杂度是多少 空间复杂度是多少
FlySky01 2003-07-08
  • 打赏
  • 举报
回复
非递归算法复杂度O(n)

空间复杂度 为O(n)和O(1)
FlySky01 2003-07-08
  • 打赏
  • 举报
回复
非递归
int FIB2(int n)
{
if(n ==1||n==2)
return 1;
else
{
int x1 = 1;
int x2 = 1;
int temp;
for(int i=2; i<n;i++)
{
temp = x1;
x1 += x2;
x2 = temp;

}
return x1;
}
}

算法复杂度O(n*n)和
算法复杂度O(1)
jiangchun_xn 2003-07-08
  • 打赏
  • 举报
回复
飞抵归:
a=1;
b=1;
c=1;
for(i=3;i<=n;i++)
{
c=a+b;
a=b;
b=c;
}
return(c);

事件复杂度:O(n)
ybluo 2003-07-08
  • 打赏
  • 举报
回复
int FIB( int n)
{
if(n<=2)
return 1;
return FIB(n-1)+ FIB(n-2);
}
gjl0625 2003-07-08
  • 打赏
  • 举报
回复
支持楼上的
FlySky01 2003-07-08
  • 打赏
  • 举报
回复
int FIB(int n)
{
if(n ==1||n==2)
return 1;

return FIB(n-1)+FIB(n-2);
}
FlySky01 2003-07-08
  • 打赏
  • 举报
回复
int FIB(int n)
{
if(n ==1||n==2)
return 1;

return n+FIB(n-1);
}
ybluo 2003-07-08
  • 打赏
  • 举报
回复
int FIB( int n)
{
if(n<=2)
return 1;
else
return FIB(n-1)+ FIB(n-2);
}
flyycyu 2003-07-08
  • 打赏
  • 举报
回复
up

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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