c语言的递归问题

猎座 2002-03-03 10:21:03
c语言的递归问题:
 
#include "stdio.h"
fun(int n,int *s)

{
int f1,f2;
if(n==1||n==2) *s=1;
else
{
fun(n-1,&f1);
fun(n-2,&f2);
*s=f1+f2;
}
}
main()
{
int x;
fun(6,&x);
printf("%d",x);

}

请问此程序的递归过程,希望各位朋友多多指点一下,在此表示感谢。




 
#include "stdio.h"
fun(int n,int *s)

{
int f1,f2;
if(n==1||n==2) *s=1;
else
{
fun(n-1,&f1);
fun(n-2,&f2);
*s=f1+f2;
}
}
main()
{
int x;
fun(6,&x);
printf("%d",x);

}

请问此程序的递归过程,希望各位朋友多多指点一下,在此表示感谢。



...全文
112 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tg123 2002-03-03
  • 打赏
  • 举报
回复
递归程序都是这样进行的
算出x==1||x==2市的值
一次向上一击反
eastliangliang 2002-03-03
  • 打赏
  • 举报
回复
递归到n=3时,既fun(3-1,&f1);得f1=1;同时fun(3-2,&f2);得f2=1,于是*s=1+1;s是上一个f1的地址,于是上一层f1=2,fun(4-2,&f2),得f2=1,于是*s=2+1;在向上得*s=2+3;上层f1=5,f2=3,在向上得*s=5+3;于是x=8
既:
n=3,f1=1,f2=1
n=4,f1=2,f2=1
n=5,f1=3,f2=2
n=6,f1=5,f2=3
于是返回8
naturerythm 2002-03-03
  • 打赏
  • 举报
回复
fibonacci数列。
其实就是:f(n)=f(n-1)+f(n-2)
int fun(int n)

{
if(n==1||n==2) return 1;
else
return f(n-1)+f(n-2);
}

上面只是递归过程,还要添加一些诸如防止数的溢出的判定。


15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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