新微赢技术网
标题:
一个错误的递归程序!
[打印本页]
作者:
火之雄狮
时间:
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