递归调用
所谓递归调用,就是函数在自己的函数体内调用自己。这样就会形成循环,一旦有循环就要注意能跳出循环才行。这两句话就说出了递归调用的两个特点:递归调用语句和递归结束条件。
1.递归调用语句:就是调用自己的语句,用于形成循环调用。
2.递归结束条件:就是一层层跳出循环的条件。
阶乘将会是很好的例子:n!=n*(n-1)*(n-2)*...*1=n*(n-1)!。n的阶乘等于n乘以n-1的阶乘,这是我们需要的递推公式。
我们要写一个阶乘函数fact,参数是n,作用是返回n的阶乘。那么fact(n-1)将返回n-1的阶乘,用n*fact(n-1)就可以得到n的阶乘。至于fact(n-1)的值怎么得来,仍然是(n-1)*fact(n-2).一直递归下去。知道fact(0)=1。也就是下面的代码:
long int fact(int n)
{
if(n==0)
return 1;
return n*fact(n-1);
}
递归调用执行起来开销大,既要花费很长时间,又占用很多内存,因此不推荐用递归调用。但有些问题非递归不能解决,因此也要学好递归。
在右侧代码框中编写程序:用递归的方法求前n个自然数的平方和。