社区
C语言
帖子详情
大家来帮忙看看这个递规函数啊
cs_sniper_0
2004-10-27 09:40:00
n=6
fun(n)
{
if(n>2)
return(fun(n-1)+fun(n-2));
else
return(2);
}
它是怎么运行得啊我实在搞不清楚
如果n*fun(n-1)这种简单得还可以
...全文
133
14
打赏
收藏
大家来帮忙看看这个递规函数啊
n=6 fun(n) { if(n>2) return(fun(n-1)+fun(n-2)); else return(2); } 它是怎么运行得啊我实在搞不清楚 如果n*fun(n-1)这种简单得还可以
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
road1981
2004-10-28
打赏
举报
回复
突然发现楼主的帖子不是斐波那契数列,应该是2 x f[n]:
2,2,4,6,10,16....
1,1,2,3,5,8....
斐波那契数列真是奥妙无穷
road1981
2004-10-28
打赏
举报
回复
斐波那契数列
顺便说一下他的原型,因为我觉得这个意大利数学家非常变态.
一对公兔子和母兔子,一个月以后产下另一对公/母兔子,然后这对兄妹居然做出了大逆不道的事情,在两个月以后又生下另一对公母兔子...罪孽的血液还在继续...
问一年以后一共有多少只兔子....
sutra
2004-10-28
打赏
举报
回复
斐波那契数的前两位应该是1,不是2啊。
int Fib( int N )
{
if( N <= 1 )
return 1;
else
return( Fib( N-1) + Fib( N-2 ) ;
}
从算法上分析,它是指数级的。对于N>4所用时间Fib(N) >= 1.5的N次方。另外过深的递归深度将占用过多的用于函数调用的空间。
另一个复杂度为O(N)的算法是:
int Fibonacci(int N)
{
int i, Last, NextToLast, Answer ;
if( N <= 1 )
return 1 ;
Last = NextToLast = 1 ;
for( i = 2; i <= N ; ++i ) {
Answer = Last + NextToLast ;
NextToLast = Last ;
Last = Answer ;
}
return Answer ;
}
jitian81411
2004-10-28
打赏
举报
回复
借用 jp1984(吕青萍C) 的图加点补充:
fib(n)
|-------------------|
fib(n - 1) fib(n - 2)
|-----------|
fib(n - 2) fib(n - 3) ......
| |
.... ......
f(3)+f(2)
|
f(2)+f(1)
其中f(2)=f(1)=2,f(3)=f(2)+f(1)=2+2=4,f(4)=f(3)+f(2)=4+2=6......
就这样算下去
cs_sniper_0
2004-10-28
打赏
举报
回复
2-2不是0了
cs_sniper_0
2004-10-28
打赏
举报
回复
不太清楚哎~意思是做嵌套递归??先将f(n-1)做到=2然后在f(n-1)的基础上再做f(n-2)??可是这时候f(n-1)已经是2了啊
renweitc
2004-10-28
打赏
举报
回复
编译器把f(n)先放入栈中,做f(n-1),若n-1>2,将f(n-1)放入栈中,做f(n-1)内的f(n-2)
依次类推直至n=2,然后依次出栈,得到f(n)内的f(n-1)值,继续做f(n-2)
cs_sniper_0
2004-10-28
打赏
举报
回复
顺便谢谢大家
cs_sniper_0
2004-10-28
打赏
举报
回复
你们都很懂埃~~~可我连数据结构和算法都没有学过~~~不理解5555555555~~~
借用 jp1984(吕青萍C) 的图加点补充:
fib(n)
|-------------------|
fib(n - 1) fib(n - 2)
|-----------|
fib(n - 2) fib(n - 3) ......
| |
.... ......
f(3)+f(2)
|
f(2)+f(1)
其中f(2)=f(1)=2,f(3)=f(2)+f(1)=2+2=4,f(4)=f(3)+f(2)=4+2=6......
就这样算下去
看起来怎么像是第三项是前两项得和??
还有我数据结构和算法还没有学过大家推荐一本吧~今天在思考乐看到一本外国得数据结构和算法~还有么~请大家推荐一本能提高c语言能力得书我在学2级c就查链表结构没看了
cs_sniper_0
2004-10-28
打赏
举报
回复
不懂埃~~~难道是数据结构吗??我还没开始学数据结构呢~~~他属于数据结构得哪一种压!我实在我不明白程序先做f(n-1)得递规在做f(n-2)得递规~但是编译器是怎么才知道f(n-1)运行结束后就直接取运行f(n-2)得
jp1984
2004-10-27
打赏
举报
回复
你画一颗倒的树再去遍历它你就明白了
fib(n)
|-------------------|
fib(n - 1) fib(n - 2)
|-----------|
fib(n - 2) fib(n - 3) ......
DuoFG
2004-10-27
打赏
举报
回复
基本上就是计算斐波那契数列
cs_sniper_0
2004-10-27
打赏
举报
回复
如果分别进行递规的话哪以f(n-1)为例子
n'=6
n''=5
n'''=4
n''''=3
n'''''=2
这是时候返回2~n'''''被释放!那么f(n-1)不就全是返回值2了!!!还有在哪本书上详细介绍了这种递规方法啊
lynnboy
2004-10-27
打赏
举报
回复
return(fun(n-1)+fun(n-2));
这一句,开辟两个临时数据,调用fun(n-1),存到第一个临时数据中,再调用fun(n-2),存到第二个临时数据中,然后返回相加后的值。
两次调用fun()都是独立的,分别继续进行迭代
C语言笔试题目
要用全局变量,需要使用"::"局部变量可以与全局变量同名,在
函数
内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个
函数
内可以定义多个同名的局部变量,比如在两个循环体内...
C,C++基本知识
(请至少说明两种) 1)在
函数
体,一个被声明为静态的变量在这一
函数
被调用过程中维持其值不变。 2) 在模块内(但在
函数
体外),一个被声明为静态的变量可以被模块内所用
函数
访问,但不能被模块外其它
函数
访问。它...
【转】C/C++笔试题
(请至少说明两种) 1)在
函数
体,一个被声明为静态的变量在这一
函数
被调用过程中维持其值不变。 2) 在模块内(但在
函数
体外),一个被声明为静态的变量可以被模块内所用
函数
访问,但不能被模块外其它
函数
访问。它...
c/c++面试题
1)在
函数
体,一个被声明为静态的变量在这一
函数
被调用过程中维持其值不变。 2) 在模块内(但在
函数
体外),一个被声明为静态的变量可以被模块内所用
函数
访问,但不能被模块外其它
函数
访问。它是一个本地的全局...
C/C++笔试题
1)在
函数
体,一个被声明为静态的变量在这一
函数
被调用过程中维持其值不变。 2) 在模块内(但在
函数
体外),一个被声明为静态的变量可以被模块内所用
函数
访问,但不能被模块外其它
函数
访问。它是一个本地...
C语言
70,037
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章