主题:递归问题求解
#include<iostream.h>
#include<string.h>
int count=1;
void rev(char *str,int n) //递归算法;
{
cout<<"递归执行第"<<count++<<"次"<<endl;
cout<<"now n= "<<n<<endl;
if(n<=1) return; //判断调用函数字符串长度及如果输入的字符串为0,则返回;
char temp=str[n-1]; //字符串翻转算法;
str[n-1]=str[0];
cout<<"the n= "<<n<<endl;
str[0]=temp;
cout<<"then n= "<<n<<endl;
rev(str+1,n-2); //递归调用;
}
int main()
{
char str[100]; //定义字符串;
cout<<"please enter string "<<endl;
cin.get(str,100); //调用方法输入字符串;
rev(str,strlen(str)); //递归函数调用;
cout<<"now the string is : "<<str<<endl; //结果输出;
return 0;
}
问题是,为什么以上的递归函数里的n变量会每次都减少2?按常理来说n-2它是一个表达式,n的值不应该会改变。
请各位指教一下。谢谢。
#include<string.h>
int count=1;
void rev(char *str,int n) //递归算法;
{
cout<<"递归执行第"<<count++<<"次"<<endl;
cout<<"now n= "<<n<<endl;
if(n<=1) return; //判断调用函数字符串长度及如果输入的字符串为0,则返回;
char temp=str[n-1]; //字符串翻转算法;
str[n-1]=str[0];
cout<<"the n= "<<n<<endl;
str[0]=temp;
cout<<"then n= "<<n<<endl;
rev(str+1,n-2); //递归调用;
}
int main()
{
char str[100]; //定义字符串;
cout<<"please enter string "<<endl;
cin.get(str,100); //调用方法输入字符串;
rev(str,strlen(str)); //递归函数调用;
cout<<"now the string is : "<<str<<endl; //结果输出;
return 0;
}
问题是,为什么以上的递归函数里的n变量会每次都减少2?按常理来说n-2它是一个表达式,n的值不应该会改变。
请各位指教一下。谢谢。

您所在位置: