递归不大好理解,先看个简单的例子。
反向输出字符串。用常规方法大家在1分钟内都能将该程序搞定,用递归来解决呢?
其实也不难。
#include<iostream>
using namespace std;
void f(char *str,int i)
{
if(str[i])
{
f(str,i+1);
cout<<str[i];
}
}
void main()
{
f(str,0);
cout<<endl;
return 0;
}
这样就OK了,要想按顺序输出,只需将输出str[i]提前,放到f(str,i+1)前即可。
要想把递归理解透彻,最好的方法就是拿者程序模仿计算机执行。