Latihan Minggu ke- 5 (REKURSIF)

1.Buatlah fungsi fibonacci dengan cara iteratif

PSEUDOCODE

Analisis :

Menentukan bilangan fibonacci dengan cara iteratif, menggunakan rumus :

        Un = U1 + U2

        U1 = U2

        U2 = Un

        Berlaku fibonacci (n) = fibonacci (n - 1) + fibonacci (n - 2)

Algoritma :

{Menentukan bilangan fibonacci dengan cara iteratif, menginputkan sebuah angka sebagai batas akhir suku fibonacci, program akan masuk ke proses perhitungan sesuai rumus yang sudah ada, menampilkan hasil}

Deklarasi :

n, a : integer

un, u1, u2 : integer (proses)

Deskripsi :

read (n)

for a ← 0 to n do

if (a <= 1) then un ← a

else then

un ← u1 + u2

u1 ← u2

u2 ← un

end if

write (un)

end for


FLOWCHART





PROGRAM C++




OUTPUT




2.Buatlah fungsi fibonacci dengan 2 cara rekursif yang lain

Cara 1 :

fungsi fib (input n : integer) : integer

Deskripsi :

if (n = 0) then

fib ← 0

else if (n = 1) then

fib ← 1

else then

fib ← fib(n - 1) + fib(n - 2)

end if

Cara 2 :

fungsi fib (input n, u1, u2 : integer) : integer

Deskripsi :

u1 ← 0

u2 ← 1

if (n = 0 or n = 1) then

fib ← u1

else then

fib ← fib(n - 1, u2, u1 + u2)

end if


PROGRAM C++

Cara 1 :




OUTPUT



Cara 2 :




OUTPUT



3.Algoritma perkalian dengan cara penjumlahan pada algoritma 5.3 belum sempurna karena belum mencakup semua kemungkinan, misalnya harga b negatif. Buatlah fungsi perkalian dengan cara penjumlahan dengan menyempurnakan algoritma 5.3 di atas

PSEUDOCODE

Analisis :

Menentukan perkalian dengan cara penjumlahan, dengam rumus apabila memasukkan angka pertama dan kedua, maka angka pertama akan dijumlahkan sebanyak inputan angka kedua

Misal :

3 x 4 = 3 + 3 + 3 + 3 = 12


Algoritma :

{Menentukan perkalian dengan cara penjumlahan, memasukkan 2 inputan berupa bilangan real atau bilangan bulat, memproses dengan kondisional dan menghitung hasilnya dengan perulangan sesuai ketentuan yang sudah ada, menampilkan hasil}


Deklarasi :

a, b : integer (input)

i, hasil : integer (proses & output)


Deskripsi :

read (a, b)

i ← 0

hasil ← 0

if ( a > 0 and a < 0 or b > 0) then

for i ← 0 to b do

hasil ← hasil + a

end for

else if (b < 0 and a < 0) then

for i ← 0 downto a do

hasil ← hasil - b

end for

else then

for i ← 0 to a do

hasil ← hasil + b

end for

end if

write (hasil)


FLOWCHART





PROGRAM C++





OUTPUT



Komentar