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

王林
Lepaskan: 2023-08-28 11:01:11
ke hadapan
1642 orang telah melayarinya

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 )
}
Salin selepas log masuk

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;
    }
    
    Salin selepas log masuk

    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
    
    Salin selepas log masuk

    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!

    Label berkaitan:
    sumber:tutorialspoint.com
    Kenyataan Laman Web ini
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
    Tutorial Popular
    Lagi>
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan