Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Program C++ ditulis menggunakan rekursi untuk mengira hasil darab dua nombor

Program C++ ditulis menggunakan rekursi untuk mengira hasil darab dua nombor

王林
王林ke hadapan
2023-08-28 11:01:111586semak imbas

Program C++ ditulis menggunakan rekursi untuk mengira hasil darab dua nombor

Rekursi ialah teknik memanggil fungsi daripada fungsi yang sama itu sendiri. Mesti ada beberapa asas atau syarat penamatan untuk menamatkan panggilan rekursif. Prosedur rekursif sangat membantu untuk melaksanakan penyelesaian berulang yang kompleks dengan kod yang kurang dan mencari penyelesaian yang lebih mudah melalui sub-operasi.

Dalam artikel ini, kita akan membincangkan kaedah rekursif untuk melaksanakan hasil (pendaraban) antara dua nombor dalam C++. Mula-mula kita memahami prinsip asas, sintaks panggilan fungsi rekursif, algoritma dan kod sumber.

Gunakan pendaraban rekursif

Dalam bahasa peringkat tinggi, terdapat pengendali pendaraban yang boleh melakukan pendaraban secara langsung. Walau bagaimanapun, kita tahu bahawa pendaraban sebenarnya adalah penambahan berulang. Jadi hasil A*B ialah bilangan penambahan berulang A dan B, atau boleh dikatakan bilangan penambahan berulang B dan A. Apabila terdapat pengulangan, kita boleh melakukan ini menggunakan rekursi. Mari kita lihat sintaks definisi fungsi rekursif terlebih dahulu.

tatabahasa

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

Algoritma

Mari kita lihat algoritma yang melakukan pendaraban menggunakan rekursi.

  • Tentukan fungsi darab(), yang menerima dua nombor A dan B
    • Jika A
    • Darab pulangan (B, A)
  • Jika tidak apabila B bukan 0, maka
    • Pulangan A + Pendaraban (A, B - 1)
  • Jika tidak
    • Kembali 0
  • Jika ia berakhir
  • Tamat definisi fungsi
  • Baca dua input A dan B
  • res = Pendaraban (A, B)
  • Jangan tunjukkan sebarang kandungan
  • Contoh

    #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;
    }
    

    Output

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

    Lihat, dalam program ini, parameter fungsi A dan B adalah kedua-dua integer. Sekarang, selepas setiap langkah, ia mengurangkan parameter kedua B sebanyak 1 dan menambah A kepada A itu sendiri. Seperti ini, fungsi itu menjalankan proses pendaraban.

    KESIMPULAN

    Rekursi ialah proses memanggil fungsi yang sama daripada fungsi itu sendiri. Apabila memanggil fungsi secara rekursif, kami mengemas kini atau menukar sedikit parameter yang ditetapkan supaya kesan yang sama tidak berlaku lagi dan lagi, dan kemudian membahagikan masalah kepada sub-masalah yang lebih kecil dan menyelesaikan masalah dengan menyelesaikan masalah yang lebih kecil ini secara bottom-up pendekatan . Hampir semua yang boleh dilaksanakan menggunakan gelung juga boleh dilaksanakan menggunakan rekursi. Dalam artikel ini, kita melihat proses mudah untuk mendarab dua integer menggunakan rekursi. Tambah integer beberapa kali untuk mendapatkan hasil pendaraban akhir.

    Atas ialah kandungan terperinci Program C++ ditulis menggunakan rekursi untuk mengira hasil darab dua nombor. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam