| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1386 人关注过本帖
标题:求个递归算法
只看楼主 加入收藏
梦自在
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2007-3-26
收藏
 问题点数:0 回复次数:16 
求个递归算法
输出下面的数值:
1
2 2
3 3 3
. . . .
. . . .
. . . . .
n n n... n
求个递归算法???并说下上面的与倒着输出来的区别.
n n n... n
. . .
. . .
3 3 3
2 2
1
谢谢
搜索更多相关主题的帖子: 递归 算法 
2007-04-10 16:52
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
收藏
得分:0 
int f(int n)
{
int i;
if(!n) return;
for(i=n;i;i--)
cout<<n<<' ';
cout<<endl;
f(n-1);
}

 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-04-10 17:13
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
收藏
得分:0 
int f(int n)
{
int i;
if(!n) return;
f(n-1);
for(i=n;i;i--)
cout<<n<<' ';
cout<<endl;
}

 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-04-10 17:16
梦自在
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2007-3-26
收藏
得分:0 
回复:(I喜欢c)int f(int n) { int i; if(!n)...

int f(int n)
{
int i;
if(!n) return;
for(i=n;i;i--)
cout<<n<<' ';
cout<<endl;
f(n-1);
}
这我知道的
但是int f(int n)
{
int i;
if(!n) return;
f(n-1);
for(i=n;i;i--)
cout<<n<<' ';
cout<<endl;
} 把d(n-1)放在前面怎么就是从122333 怎么输入呢.我看f(n-1)放在前面和后面是一样的啊
请指点!!!谢谢!!!


http://blog./adreamstar/
2007-04-10 18:29
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
void display_up(int n){
if (n-- > 0){
display_up(n);
++n;
for (int i = 1;i <= n;++i)
cout << n << " ";
cout << endl;
}
return;
}
void display_down(int n){
if (n > 0){
for (int i = 1;i <= n;++i)
cout << n << " ";
cout << endl;
display_down(--n);
}
return;
}

Fight  to win  or  die...
2007-04-10 19:11
梦自在
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2007-3-26
收藏
得分:0 
回复:(aipb2007)void display_up(int n){ if (n...

我昏哒 .这算法都是一样的.
但请讲解下上面我问的点小问题好么???
谢谢


http://blog./adreamstar/
2007-04-10 19:41
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
你在我代码的基础上说详细点你的问题,我没大看明白!
呵呵,不好意思

Fight  to win  or  die...
2007-04-10 19:55
梦自在
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2007-3-26
收藏
得分:0 
回复:(aipb2007)你在我代码的基础上说详细点你的问...
display_up(n);放在后面我知道是从n开始输出
但display_up(n);放在前面怎么是从1开始输出了

http://blog./adreamstar/
2007-04-10 19:58
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
void display_up(int n){
if (n-- > 0){
display_up(n);
++n;
for (int i = 1;i <= n;++i)
cout << n << " ";
cout << endl;
}
return;
}
这个吧!反复调用display_up(n);每次都使n减去1,当n为0那次,if为假,所以跳向执行++n,n为1,输出第一行。跟着继续执行到return,至此,程序回到display_up(n)处,这是n为1,在执行下一句,++n,n为2,在输出第2行,……

关键是每次调用函数本身时,都从红色部分断开,程序回记录一个断点,只有当下一次调用结束,再返回执行当前次。
你可以这样理解,每次调用函数本身,都要从头到尾运行函数体代码,如果中途被切断,表示当前次被暂停了。

如果你觉得我叙述还不清楚的话,就自己跟踪下,就可以发现程序执行的顺序了。

Fight  to win  or  die...
2007-04-10 20:28
独孤浪子
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2007-3-27
收藏
得分:0 
简单啊.看以下代码
void display_up(int n)
{
if (n-- > 0){
display_up(n);
++n;
for (int i = 1;i <= n;++i)
cout << n << " ";
cout << endl;
}
return;
}
void display_down(int n){
if (n > 0){
for (int i = 1;i <= n;++i)
cout << n << " ";
cout << endl;
display_down(--n);
}
return;
}

2007-04-10 20:34
快速回复:求个递归算法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023543 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved