C++编程入门 互动版

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

递归调用

所谓递归调用,就是函数在自己的函数体内调用自己。这样就会形成循环,一旦有循环就要注意能跳出循环才行。这两句话就说出了递归调用的两个特点:递归调用语句和递归结束条件

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个自然数的平方和。