设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 1402|回复: 8
打印 上一主题 下一主题

一个错误的递归程序!

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-4 02:27:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请大家指点我的程序那里出问题拉!
//用一个递归函数将字符串逆序输出
#include<iostream>
using namespace std;
void f( char* p_Arr) //p_Arr一个指向字符串的指针
{
if (*p_Arr=='\0') p_Arr--;
else f(p_Arr++) ;
cout<<*p_Arr;
}
void main()
{
char Arr[5]="abcd";
f(Arr);
cout<<"程序结束";
2#
发表于 2009-11-4 02:27:56 | 只看该作者
else
{
f(p_Arr+1) ;
cout<<*p_Arr;
}
回复 支持 反对

使用道具 举报

3#
发表于 2009-11-4 02:27:57 | 只看该作者
wfpb
你好:
else
{
f(p_Arr+1) ;
cout<<*p_Arr;
}
else
{
f(p_Arr++) ;
cout<<*p_Arr;
}
递归里面的“p_Arr++”与“p_Arr+1”不同在那里呢?
回复 支持 反对

使用道具 举报

4#
发表于 2009-11-4 02:27:58 | 只看该作者
f(p_Arr++);
相当于
f(p_Arr);
p_Arr++;
回复 支持 反对

使用道具 举报

5#
发表于 2009-11-4 02:27:59 | 只看该作者
if (*p_Arr=='\0') p_Arr--;改成if (*p_Arr=='\0');试试
俺没试过
回复 支持 反对

使用道具 举报

6#
发表于 2009-11-4 02:28:00 | 只看该作者
以下是引用lixang在2007-3-6 19:52:12的发言:
wfpb
你好:
else
{
f(p_Arr+1) ;
cout<<*p_Arr;
}
else
{
f(p_Arr++) ;
cout<<*p_Arr;
}
递归里面的“p_Arr++”会改变p_Arr,与“p_Arr+1”不会不同在那里呢?
回复 支持 反对

使用道具 举报

7#
发表于 2009-11-4 02:28:01 | 只看该作者
回复楼上,不同之处在于后面的cout输出的内容。
回复 支持 反对

使用道具 举报

8#
发表于 2009-11-4 02:28:02 | 只看该作者
不知道大家发现没,上面修改后运行的结果是ddcba
我又修改了一下
#include<iostream>
using namespace std;
void f( char* p_Arr) //p_Arr一个指向字符串的指针
{
if (*p_Arr=='\0')
{
p_Arr--;
}
else
{
if(*(p_Arr+1)!='\0')//在这里防止d被输出两次
f(p_Arr+1) ;
}
cout<<*p_Arr;
}
回复 支持 反对

使用道具 举报

9#
发表于 2009-11-4 02:28:03 | 只看该作者
恩,谢谢指出,的确需要判断一下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-19 13:22 , Processed in 0.075471 second(s), 8 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表