使用递归查找两个数字的乘积的 C++ 程序


递归是一种技术,我们可以在其中从同一个函数本身调用函数。必须有一些基本或终止条件来结束递归调用。递归过程非常有助于使用更少的代码执行复杂的迭代解决方案,并通过子操作查找更容易地解决问题。

在本文中,我们将讨论一种递归方法来在 C++ 中执行两个数字之间的乘积(乘法)。最初,我们将了解基本原理、递归函数调用的语法、算法和源代码。

使用递归进行乘法

在高级语言中,可以使用乘法运算符直接执行乘法。但是我们知道乘法实际上是重复加法。因此,A * B 的结果是 A 的重复加法,B 次,或者我们可以说 B 的重复加法,A 次。只要有重复,我们就可以使用递归来做到这一点。让我们首先看看递归函数定义语法。

语法

<return type> function_name ( parameter list ) {
   if ( base condition ) {
      terminate recursive call
   }
   recursive function call: function_name ( updated parameter list )
}

算法

让我们看看使用递归执行乘法的算法。

  • 定义一个函数 multiply(),它接受两个数字 A 和 B
    • 如果 A < B,则
      • 返回 multiply( B, A )
    • 否则,当 B 不为 0 时,则
      • 返回 A + multiply( A, B - 1 )
    • 否则
      • 返回 0
    • 结束 if
  • 函数定义结束
  • 读取两个输入 A 和 B
  • res = multiply( A, B )
  • 显示 res

示例

#include <iostream> #include <sstream> using namespace std; int multiply( int A, int B) { if( A < B ) { return multiply( B, A ); } else if( B != 0 ) { return A + multiply( A, B - 1 ); } else { return 0; } } int main() { cout << "Multiplication of 5, 7 is: " << multiply( 5, 7 ) << endl; cout << "Multiplication of 8, 0 is: " << multiply( 8, 0 ) << endl; cout << "Multiplication of 25, 3 is: " << multiply( 25, 3 ) << endl; cout << "Multiplication of 9, 1 is: " << multiply( 9, 1 ) << endl; }

输出

Multiplication of 5, 7 is: 35
Multiplication of 8, 0 is: 0
Multiplication of 25, 3 is: 75
Multiplication of 9, 1 is: 9

看,在这个程序中,函数正在获取参数 A 和 B,它们都是两个整数。现在,在每一步之后,它都会将第二个参数 B 减少 1,并将 A 与自身相加。像这样,函数正在执行乘法过程。

结论

递归是从函数本身调用同一个函数的过程。在递归调用函数时,我们稍微更新或更改参数集,以便相同的效应不会一遍又一遍地出现,然后它将问题分解成更小的子问题,并通过自下而上的方式解决这些更小的问题来解决问题。几乎所有可以使用循环实现的东西,也可以使用递归来实现。在本文中,我们看到了使用递归将两个整数相乘的简单过程。这些整数被多次相加以获得最终的乘法结果。

更新于: 2022 年 10 月 19 日

3K+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告