使用遞迴查詢兩個數字的乘積的 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+ 瀏覽量

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.