Saya sedang mempelajari rekursif dengan C++, tetapi ada suatu kendala

Berikut ini adalah pertanyaan dari lobyxjr2 pada mata pelajaran TI untuk jenjang Sekolah Menengah Atas

Saya sedang mempelajari rekursif dengan C++, tetapi ada suatu kendala jika saya ingin membuat code sebagai berikut:#include
using namespace std;

int perkalian(int a, int b);

int main()
{
int a, b, hasil, awal;
cout << "Masukan angka pertama: ";
cin >> a;
cout << "Masukan angka ke dua: ";
cin >> b;

hasil = perkalian(a,b);
cout << "\nHasilnya adalah: ";
cout << hasil << endl;

cin.get();
return 0;
}

int perkalian(int a, int b){
if (b <= 0)
{
cout << a;
return b;
}
else
{
cout << a << "+";
return a + perkalian(a,(b - 1));
}
}
dapat dilihat bahwa pertambahannya akan menguang sebanyak 11 kali, tetapi dengan hasil yang benar. Jika saya menghapus cout di bagian if maka pertambahan nya akan berakhir pada "+" bukan pada angka. Tolong di bantu

Jawaban dan Penjelasan

Berikut ini adalah pilihan jawaban terbaik dari pertanyaan diatas.

Jawaban:

Permasalahan pada kode yang Anda berikan adalah karena ada penggunaan cout yang seharusnya tidak ada pada bagian if statement. Jika Anda menghapus cout di bagian if, maka output yang dihasilkan hanya akan berupa tanda "+" dan tidak ada angka.

Untuk mengatasi hal ini, Anda bisa memindahkan penggunaan cout ke dalam blok else statement, sehingga nantinya output angka akan ditampilkan setelah dilakukan operasi perkalian. Berikut adalah contoh kode yang telah diperbaiki:

Code:

#include <iostream>

using namespace std;

int perkalian(int a, int b);

int main()

{

   int a, b, hasil, awal;

   cout << "Masukan angka pertama: ";

   cin >> a;

   cout << "Masukan angka ke dua: ";

   cin >> b;

   hasil = perkalian(a,b);

   cout << "\nHasilnya adalah: ";

   cout << hasil << endl;

   cin.get();

   return 0;

}

int perkalian(int a, int b)

{

   if (b <= 0)

   {

       return 0;

   }

   else

   {

       int hasil = a + perkalian(a, (b - 1));

       if (b == 1)

       {

           cout << a;

       }

       else

       {

           cout << a << "+";

       }

       return hasil;

   }

}

Pada kode di atas, penggunaan cout dipindahkan ke dalam blok else statement pada fungsi perkalian. Selain itu, perhitungan yang awalnya dimulai dari 1, diubah menjadi dimulai dari 0 pada if statement agar tidak menghasilkan tanda "+" pada output. Terakhir, hasil perhitungan disimpan pada variabel lokal dan di-return agar dapat ditampilkan pada output. Semoga membantu!

Semoga dengan pertanyaan yang sudah terjawab oleh azzaalhanifa dapat membantu memudahkan mengerjakan soal, tugas dan PR sekolah kalian.

Apabila terdapat kesalahan dalam mengerjakan soal, silahkan koreksi jawaban dengan mengirimkan email ke yomemimo.com melalui halaman Contact

Last Update: Wed, 21 Jun 23