以前一开始接触递归,真的很难理解那到底是怎么运行的。但是昨天化了一晚上理解完了一段python语言中的一段递归后,顿时豁然开朗了。完全搞明白后,自己又写了cpp中的pow函数和iterate函数,分别用于求某数的次方和累加和。
递归函数前面的一部分要写明什么时候跳出这个循环。比如求a的b次方的函数,就要写明当b等于1的时候,跳出循环,返还a。(可惜一开始写的时候又一次写成了b=1)。
if(b==1)
return a;
接下来是如果不符合条件,就再一次进入循环:c=a*pow(a,b-1);
当然重新调用递归函数时参数要修改一下,使其更接近跳出循环的那个值。
horatio@horatio-OptiPlex-3010:~/c$ vim recursion.cpp
horatio@horatio-OptiPlex-3010:~/c$ g++ recursion.cpp -o recursion
horatio@horatio-OptiPlex-3010:~/c$ ./recursion
首先在c文件夹中建立文本,输入下面的代码,然后编译,最后执行。
#include<iostream>
using namespace std;
int pow(int a,int b)
{
int c=0;
if(b==1)
return a;
c=a*pow(a,b-1);
return c;
}
int iterate(int a)
{
int c=0;
if(a==1)
return 1;
c=a+iterate(a-1);
return c;
}
int main()
{
int i=2;
int j=10;
int x=0,y=0;
x=pow(i,j);
y=iterate(j);
cout<<x<<endl;
cout<<y<<endl;
return(0);
}