新微赢技术网

标题: 一个错误的递归程序! [打印本页]

作者: 火之雄狮    时间: 2009-11-4 02:27
标题: 一个错误的递归程序!
请大家指点我的程序那里出问题拉!
//用一个递归函数将字符串逆序输出
#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<<"程序结束";
作者: 藤蘿下的陽光    时间: 2009-11-4 02:27
else
{
f(p_Arr+1) ;
cout<<*p_Arr;
}
作者: …═☆幻    时间: 2009-11-4 02:27
wfpb
你好:
else
{
f(p_Arr+1) ;
cout<<*p_Arr;
}
else
{
f(p_Arr++) ;
cout<<*p_Arr;
}
递归里面的“p_Arr++”与“p_Arr+1”不同在那里呢?
作者: 云飞    时间: 2009-11-4 02:27
f(p_Arr++);
相当于
f(p_Arr);
p_Arr++;
作者: 飘渺    时间: 2009-11-4 02:27
if (*p_Arr=='\0') p_Arr--;改成if (*p_Arr=='\0');试试
俺没试过
作者: 陈君    时间: 2009-11-4 02:28
以下是引用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”不会不同在那里呢?
作者: 炫夜    时间: 2009-11-4 02:28
回复楼上,不同之处在于后面的cout输出的内容。
作者: 爽口爽心    时间: 2009-11-4 02:28
不知道大家发现没,上面修改后运行的结果是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;
}
作者: 踏浪    时间: 2009-11-4 02:28
恩,谢谢指出,的确需要判断一下




欢迎光临 新微赢技术网 (http://bbs.weiying.cn/) Powered by Discuz! X3.2