6
Metode
Metode
adalah suatu runtun deklarasi dan statemen yang dapat dieksekusi dan dibungkus
bersama menjadi program-mini sederhana. Dalam beberapa bahasa pemrograman lain,
metode dikenal dengan fungsi, prosedur, subrutin, atau subprogram.
Soal dan
Penyelesaian
1.
Tulislah
sebuah program yang menghitung pangkat tiga atas suatu angka.
Penyelesaian
public class
MetodeKubik {
public static void main(String[] args) {
for (int i = 0; i <
6; i++)
System.out.println ( i +
"\t" + kubik(i));
}
static int kubik(int n)
{
return n*n*n;
}
}
Keluaran Program
0 0
1 1
2 8
3 27
4 64
5 125
2.
Tulislah sebuah
program yang menguji sebuah metode min
yang menghasilkan integer minimum dari kedua argumen integernya.
Penyelesaian
import java.util.Random;
public class MetodeMin {
public static void main(String[] args) {
Random acak = new Random();
for (int i = 0; i <
5; i++) {
float x = acak.nextFloat();
int m = Math.round(100*x);
x = acak.nextFloat();
int n = Math.round(100*x);
int y = min(m, n);
System.out.println("min("+ m + ", "+ n + " ) = " + y);
}
}
static int min(int x, int y) {
if (x < y) return x;
else return y;
}
}
Keluaran Program
min(34, 96 ) = 34
min(56, 33 ) = 33
min(68, 65 ) = 65
min(99, 79 ) = 79
min(20, 84 ) = 20
3.
Tulislah
sebuah program yang memiliki sebuah metode bernama f dan mengimplementasikan fungsi faktorial. Metode tersebut juga
memiliki satu variabel lokal f
bertipe long.
Penyelesaian
public class
Metodef {
public static void main(String[] args) {
for (int i = 0; i <
9; i++)
System.out.println("f("+
i + ") = " + f(i));
}
static long f(int n) {
long f = 1;
while (n > 1)
f *= n--;
return f;
}
}
Keluaran Program
f(0) = 1
f(1) = 1
f(2) = 2
f(3) = 6
f(4) = 24
f(5) = 120
f(6) = 720
f(7) = 5040
f(8) = 40320
4.
Tulislah
suatu program untuk menghitung permutasi.
Penyelesaian
public class
MetodePermutasi {
public static void main(String[ ] args) {
for (int i = 0; i < 9
; i++) {
for (int j = 0; j <=
i; j++)
System.out.print(p(i,j) + "\t");
System.out.println();
}
}
static long p(int n, int k) {
long p = 1;
for (int i = 0; i <
k; i++)
p *= n--;
return p;
}
}
Keluaran Program
1
1 1
1 2 2
1 3 6 6
1 4 12 24 24
1 5 20 60 120 120
1 6 30 120 360 720 720
1 7 42 210 840 2520 5040 5040
1 8 56 336 1680 6720 20160 40320 40320
5.
Tulis-ulanglah
program pada soal no. 4, dimana di dalamnya terdapat suatu metode yang
memanggil metode lain.
Penyelesaian
public class
MetodePanggilMetodeLain {
public static void main(String[] args) {
for (int i = 0; i <
9; i++) {
for (int j = 0; j <=
i; j++)
System.out.print(p(i, j) + "\t");
System.out.println();
}
}
static long p(int n, int k) {
return f (n)/ f (n-k);
}
static long f (int n) {
long f = 1;
while (n > 1)
f *= n--;
return f;
}
}
Keluaran Program
1
1 1
1 2 2
1 3 6 6
1 4 12 24 24
1 5 20 60 120 120
1 6 30 120 360 720 720
1 7 42 210 840 2520 5040 5040
1 8 56 336 1680 6720 20160 40320 40320
6.
Tulislah
suatu program untuk menghitung kombinasi.
Penyelesaian
public class
MetodeKombinasi {
public static void main(String[] args) {
for (int i = 0; i < 9
; i++) {
for (int j = 0; j <=
i; j++)
System.out.print(c(i,j) + "\t");
System.out.println();
}
}
static long c(int n, int k) {
return p(n, k)/f(k) ;
}
static long f(int n) {
long f = 1;
while (n > 1)
f *= n--;
return f;
}
static long p(int n, int k) {
long p = 1;
for (int i = 0; i <
k; i++)
p *= n--;
return p;
}
}
Keluaran Program
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
7.
Tulislah
sebuah program yang memuat suatu metode yang memanggil dirinya sendiri
(rekursif).
Penyelesaian
public class
MetodeFaktorial {
public static void main(String[] args) {
for (int i = 0; i <
9; i++)
System.out.println
("faktorial(" + i + ") =" + faktorial(i));
try {System.in.read();}
catch (Exception e) {}
}
static long faktorial(int n) {
if (n < 2) return 1;
return n*faktorial(n-1) ;
}
}
Keluaran Program
faktorial(0) =1
faktorial(1) =1
faktorial(2) =2
faktorial(3) =6
faktorial(4) =24
faktorial(5) =120
faktorial(6) =720
faktorial(7) =5040
faktorial(8)
=40320
8.
Metode
boolean merupakan suatu metode yang menghasilkan nilai balik bertipe boolean. Metode seperti ini biasanya
dipanggil sebagai ekspresi boolean yang dipakai untuk mengendalikan loop.
Tulislah sebuah program yang mengilustrasikan penggunaan metode boolean.
Penyelesaian
public class
MetodeBooleanPrima {
public static void main(String[] args) {
for (int i = 0; i <
80; i++)
if (apaPrima(i)) System.out.print(i + " " ) ;
}
static boolean apaPrima(int n) {
if (n < 2) return false;
if (n == 2) return true;
if (n%2 == 0) return false;
for (int d = 3; d <
Math.sqrt(n); d += 2)
if (n%d == 0) return false;
return true;
}
}
Keluaran Program
2 3 5 7 9 11 13 17 19 23 25 29 31 37 41 43 47 49 53 59
61 67 71 73 79
9.
Metode
void merupakan suatu metode yang menghasilkan tipe nilai balik void. Ini
berarti bahwa metode ini tidak menghasilkan nilai balik apapun. Tulislah sebuah
program yang mengilustrasikan penggunaan metode ini.
Penyelesaian
public class
MetodeVoidTahun {
public static void main(String[] args) {
uji(1492);
uji(1592);
uji(1600);
uji(1700);
uji(1776);
uji(1992);
uji(1999);
uji( 2000);
}
static boolean
apaTahunLeap(int n) {
if (n < 1582) return false;
if (n%400 == 0) return true;
if (n%100 == 0) return false;
if (n%4 == 0) return true;
return false;
}
static void uji(int n){
if (apaTahunLeap(n)) System.out.println(n + " adalah tahun leap.");
else System.out.println(n + " bukan tahun leap.");
}
}
Keluaran Program
1492 bukan tahun leap.
1592 adalah tahun leap.
1600 adalah tahun leap.
1700 bukan tahun leap.
1776 adalah tahun leap.
1992 adalah tahun leap.
1999 bukan tahun leap.
2000 adalah tahun leap.
10.
Anda dapat
menggunakan nama sama untuk metode-metode yang berbeda sepanjang metode-metode
tersebut memiliki daftar tipe parameter yang berbeda. Teknik ini disebut dengan
overload. Tulislah suatu program untuk mengilustrasikan
penggunaan pengoverloadan metode ini.
Penyelesaian
import java.util.Random;
public class
MetodeOverload {
public static void main(String[] args){
Random acak = new Random();
for (int i = 0; i <
5; i++) {
float x = acak.nextFloat();
int a = Math.round(100*x);
x = acak.nextFloat();
int b = Math.round(100*x);
x = acak.nextFloat();
int c =
Math.round(100*x);
System.out.println("maks("+
a + ", " + b + ", " + c
+ ")= " + maks(a, b, c));
}
}
static int maks(int m, int n) {
if (m > n) return m;
return n;
}
static int maks(int n1, int n2, int n3) {
return maks(maks(n1, n2), n3);
}
}
Keluaran Program
maks(21, 69, 4)= 69
maks(40, 96, 59)= 96
maks(58, 32, 40)= 58
maks(42, 65, 48)= 65
maks(75, 13, 0)= 75
11.
Tulislah
dan ujilah sebuah metode yang mengimplementasikan fungsi Babbage
.
Penyelesaian
public class
MetodeBabbage {
public static void main(String[] args) {
for (int i = 0; i <
10; i++)
System.out.println(i +
"\t" + babbage(i));
}
static int babbage(int x) {
return x*x + x + 41;
}
}
Keluaran Program
0 41
1 43
2 47
3 53
4 61
5 71
6 83
7 97
8 113
9 131
12.
Tulislah
dan ujilah sebuah metode yang menghasilkan maksimum dari dua integer yang
diberikan.
Penyelesaian
import java.util.Random;
public class
MetodeMaksimum {
public static void main(String[] args) {
Random random = new Random();
for (int i = 0; i <
5; i++) {
float x = random.nextFloat();
int m = Math.round(100*x);
x = random.nextFloat();
int n = Math.round(100*x);
int y = maks(m, n);
System.out.println("maks("
+ m + ", " + n + ") = "
+ y);
}
}
static int maks(int x, int y) {
if (x < y) return x;
else return y;
}
}
Keluaran Program
maks(68, 29) = 29
maks(22, 84) = 22
maks(13, 69) = 13
maks(84, 95) = 84
maks(31, 58) = 31
13.
Tulislah
dan ujilah sebuah metode yang menghasilkan maksimum dari tiga integer yang
diberikan.
Penyelesaian
import java.util.Random;
public class
MetodeMaksTigaInteger {
public static void main(String[] args) {
Random acak = new Random();
for (int i = 0; i <
5; i++) {
float x = acak.nextFloat();
int n1 = Math.round(100*x);
x = acak.nextFloat();
int n2 = Math.round(100*x);
x = acak.nextFloat();
int n3 = Math.round(100*x);
int y = maks(n1, n2, n3);
System.out.println("maks("
+ n1 + ", " + n2 + ",
" + n3 + ") = " + y);
}
}
static int maks(int x, int y, int z) {
int m = x;
if ( y > m) m = y;
if (z > m) m = z;
return m;
}
}
Keluaran Program
maks(17, 74, 86) = 86
maks(90, 17, 54) = 90
maks(62, 46, 3) = 62
maks(66, 3, 39) = 66
maks(55, 4, 44) = 55
14.
Tulislah
dan ujilah pada program yang sama sebuah metode yang menghasilkan nilai minimum
dan metode lain yang menghasilkan maksimum, dimana kedua metode memiliki empat parameter
yang diberikan.
Penyelesaian
import java.util.Random;
public class
MetodeMaksMinEmpatParameter {
public static void main(String[] args) {
Random acak = new Random();
for (int i = 0; i <
5; i++) {
float x = acak.nextFloat();
int n1 = Math.round(100*x);
x = acak.nextFloat();
int n2 = Math.round(100*x);
x = acak.nextFloat();
int n3 = Math.round(100*x);
x = acak.nextFloat();
int n4 = Math.round(100*x);
System.out.println("min("
+ n1 + ", " + n2 + ", " + n3 + ", "
+ n4 + ") = " + min(n1, n2, n3, n4));
System.out.println("maks("
+ n1 + ", " + n2 + ", " + n3 + ", "
+
n4 + ") = " + maks(n1, n2, n3, n4));
}
}
static int min(int xl, int x2, int x3, int x4){
int m = xl;
if (x2 < m) m = x2;
if (x3 < m) m = x3;
if (x4 < m) m = x4;
return m;
}
static int maks(int xl, int x2, int x3, int x4){
int m = xl;
if (x2 > m) m = x2;
if (x3 > m) m = x3;
if (x4 > m) m = x4;
return m;
}
}
Keluaran Program
min(26, 96, 31, 57) = 26
maks(26, 96, 31, 57) = 96
min(52, 94, 2, 10) = 2
maks(52, 94, 2, 10) = 94
min(56, 35, 46, 43) = 35
maks(56, 35, 46, 43) = 56
min(81, 10, 6, 71) = 6
maks(81, 10, 6, 71) = 81
min(92, 43, 32, 27) = 27
maks(92, 43, 32, 27) = 92
15.
Tulis dan ujilah
sebuah metode yang mengimplementasikan fungsi permutasi menggunakan loop while, menggantikan loop for.
Penyelesaian
public class
MetodePermutasiDenganWhile {
public static void main(String[] args) {
for (int i = 0; i <
9; i++) {
for (int j = 0; j <=
i; j++)
System.out.print(p(i,j) + "\t");
System.out.println();
}
}
static long p(int n, int k) {
long p = 1;
while (k--> 0)
p *= n--;
return p;
}
}
Keluaran Program
1
1 1
1 2 2
1 3 6 6
1 4 12 24 24
1 5 20 60 120 120
1 6 30 120 360 720 720
1 7 42 210 840 2520 5040 5040
1 8 56 336 1680 6720 20160 40320 40320
16.
Tulis dan ujilah
sebuah metode yang mengimplementasikan fungsi kombinasi menggunakan definisi
berikut:
Penyelesaian
public class
MetodeKombinasiBaru {
public static void main(String[] args) {
for (int i = 0; i <
9; i++) {
for (int j = 0; j <=
i; j++)
System.out.print(c(i,j) + "\t");
System.out.println();
}
}
static long c(int n, int k) {
return f(n)/(f(k)*f(n-k)) ;
}
static long f(int n) {
long f = 1;
while (n > 1)
f *= n--;
return f;
}
}
Keluaran Program
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
17.
Tulis
dan ujilah metode yang mengimplementasi fungsi pemangkatan.
Penyelesaian
public class
MetodePangkat {
public static void main(String[] args) {
for (int n = -3; n <
7; n++)
System.out.println(pangkat(2.0,n));
}
static double pangkat(double x, int n) {
double p = 1.0;
for (int i = 0; i <
n; i++)
p *= x;
for (int i = 0; i <
-n; i++)
p /= x;
return p;
}
}
Keluaran Program
0.125
0.25
0.5
1.0
2.0
4.0
8.0
16.0
32.0
64.0
18.
Tulis
dan ujilah metode yang mengimplementasikan fungsi GCD (greatest common divisor, pembagi bersama terbesar). Fungsi ini
menghasilkan pembagi bersama terbesar dari dua angka.
Penyelesaian
import java.util.Random;
public class
MetodeGCD {
public static void main(String[] args) {
Random acak = new Random();
for (int i = 0 ; i <
9; i++) {
float x = acak.nextFloat();
int m = Math.round(100*x);
x = acak.nextFloat();
int n = Math.round(100*x);
int g = gcd(m, n);
System.out.println("gcd("+
m + ", " + n + ") =" + g
+ " \t" + m + "/" + g + " = " + m/g
+ " \t" + n + "/" + g + " = " + n/g);
}
}
static int gcd(int m, int n) {
while (m > 0 ) {
if (m < n) {
int temp = m;
m = n;
n = temp;
}
m -= n;
}
return n;
}
}
Keluaran Program
gcd(75, 47) =1 75/1 = 75
47/1 = 47
gcd(37, 52) =1 37/1 = 37
52/1 = 52
gcd(45, 89) =1 45/1 = 45
89/1 = 89
gcd(31, 1) =1 31/1 = 31
1/1 = 1
gcd(78, 55) =1 78/1 = 78
55/1 = 55
gcd(56, 18) =2 56/2 = 28
18/2 = 9
gcd(34, 11) =1 34/1 = 34
11/1 = 11
gcd(99, 47) =1 99/1 = 99
47/1 = 47
gcd(81, 74) =1 81/1 = 81
74/1 = 74
19.
Tulis dan ujilah
metode yang mengimplementasikan fungsi lcm (least
common multiple, kelipatan bersama terkecil) atas dua angka. Sebagai
contoh, lcm(24, 40) adalah 120. Gunakan formula
Penyelesaian
import java.util.Random;
public class
MetodeLCM {
public static void main(String[] args) {
Random acak = new Random();
for (int i = 0; i <
9; i++) {
float x = acak.nextFloat();
int m = Math.round(100*x);
x = acak.nextFloat();
int n = Math.round(100*x);
int y = lcm(m, n);
System.out.println("lcm("+
m + ", " + n + ") ="
+ y
+ " \t" + y + "/" + m + " =
" + y/m
+ " \t" + y + "/" + n + " =
" + y/n);
}
try { System.in.read();}
catch (Exception e) { }
}
static int lcm(int m, int n) {
return m*n/gcd(m,n);
}
static int gcd(int m, int n) {
while (m > 0) {
if (m < n) {
int temp = m;
m = n;
n = temp;
}
m -= n;
}
return n;
}
}
Keluaran Program
lcm(4, 41) =164
164/4 = 41 164/41
= 4
lcm(52, 71) =3692
3692/52 = 71 3692/71
= 52
lcm(25, 34) =850
850/25 = 34 850/34
= 25
lcm(61, 88) =5368
5368/61 = 88 5368/88
= 61
lcm(13, 51) =663
663/13 = 51 663/51
= 13
lcm(78, 78) =78
78/78 = 1 78/78
= 1
lcm(52, 48) =624
624/52 = 12 624/48
= 13
lcm(17, 38) =646
646/17 = 38 646/38
= 17
lcm(45, 50) =450
450/45 = 10 450/50
= 9
20.
Tulislah
dan ujilah metode yang menghasilkan dijit pada urutan ke-k dari integer positif
n yang diberikan. Sebagai contoh, dijit(846590, 3) akan menghasilkan 6, dan
dijit(86421, 7) akan menghasilkan 0.
Penyelesaian
import java.util.Random;
public class
MetodeDijit {
public static void main(String[] args) {
Random acak = new Random();
float x = acak.nextFloat();
long n = Math.round(10000000000L*x);
System.out.println("dijit 9 dari " + n +
" adalah " + dijit(n,9));
System.out.println("dijit 8 dari " + n +
" adalah " + dijit(n,8));
System.out.println("dijit 7 dari " + n + " adalah " + dijit(n,7));
System.out.println("dijit 2 dari " + n +
" adalah " + dijit(n,2));
System.out.println("dijit 1 dari " + n +
" adalah " + dijit(n,1));
System.out.println("dijit 0 dari " + n +
" adalah " + dijit(n,0));
}
static int dijit(long n, int k) {
for (int i = 0; i <
k; i++)
n /= 10;
return (int)n%10;
}
}
Keluaran Program
dijit 9 dari 2147483647 adalah 2
dijit 8 dari 2147483647 adalah 1
dijit 7 dari 2147483647 adalah 4
dijit 2 dari 2147483647 adalah 6
dijit 1 dari 2147483647 adalah 4
dijit 0 dari 2147483647 adalah 7
21.
Tulis
dan ujilah metode yang mengimplementasikan fungsi Fibonacci secara rekursif.
Penyelesaian
public class
MetodeFibonacci {
public static void main(String[] args) {
for (int i = 0; i <
17; i++)
System.out.print(fib(i)+
" ") ;
try { System.in.read();}
catch (Exception e) { }
}
static long fib(int n) {
if (n < 2) return n;
return
fib(n-1) + fib(n-2);
}
}
Keluaran Program
0 1 1 2 3 5 8 13 21 34 55 89
144 233 377 610 987
22. Implementasikanlah fungsi gcd secara rekursif. Anda harus memeriksa
keluaran program Anda dengan memanggil kedua versi fungsi gcd (iteratif dan rekursif).
Penyelesaian
import java. util.Random;
public class
MetodeGCDRekursif {
public static void main(String[] args) {
Random acak = new Random();
for (int i = 0 ; i <
9; i++) {
float x = acak.nextFloat();
long m = Math.round(100*x);
x = acak.nextFloat();
long n = Math.round(100*x);
long g1 = gcd1(m, n);
System.out.println("gcd("+
m + ", " + n + ") =" + g1
+ " \t" + m + "/" + g1 + " =
" + m/g1
+ " \t" + n + "/" + g1 + " =
" + n/g1);
long g2 = gcd2(m, n);
System.out.println("gcd("+
m + ", " + n + ") =" + g2
+ " \t" + m + "/" + g2 + " =
" + m/g2
+ " \t" + n + "/" + g2 + " =
" + n/g2);
}
}
static long gcd1(long m, long n) {
while (m > 0 ) {
if (m < n) {
long temp = m;
m = n;
n = temp;
}
m -= n;
}
return n;
}
static long gcd2 (long m, long n) {
if (m < 1) return n;
if (m < n) return
gcd2 (n, m);
return gcd2 (m-n,n );
}
}
Keluaran Program
gcd(99, 24) =3 99/3 = 33
24/3 = 8
gcd(99, 24) =3 99/3 = 33
24/3 = 8
gcd(81, 74) =1 81/1 = 81
74/1 = 74
gcd(81, 74) =1 81/1 = 81
74/1 = 74
gcd(37, 73) =1 37/1 = 37
73/1 = 73
gcd(37, 73) =1 37/1 = 37
73/1 = 73
gcd(53, 57) =1 53/1 = 53
57/1 = 57
gcd(53, 57) =1 53/1 = 53
57/1 = 57
gcd(6, 30) =6 6/6 = 1
30/6 = 5
gcd(6, 30) =6 6/6 = 1
30/6 = 5
gcd(35, 33) =1 35/1 = 35
33/1 = 33
gcd(35, 33) =1 35/1 = 35
33/1 = 33
gcd(83, 67) =1 83/1 = 83
67/1 = 67
gcd(83, 67) =1 83/1 = 83
67/1 = 67
gcd(88, 31) =1 88/1 = 88
31/1 = 31
gcd(88, 31) =1 88/1 = 88
31/1 = 31
gcd(38, 39) =1 38/1 = 38
39/1 = 39
gcd(38, 39) =1 38/1 = 38
39/1 = 39
23.
Implementasikanlah
fungsi pemangkatan secara rekursif. Ujilah program Anda dengan juga memanggil
metode Math.pow untuk memeriksa
validitas hasil.
Penyelesaian
public class
MetodePangkatRekursif {
public static void main (String [] args){
for (int n = -3; n <
7; n++)
System.out.println("\t" + n + "\t"+ pangkat(2.0, n)
+ "\t" +
Math.pow(2.0,n));
}
static double pangkat(double x, int n) {
if (n == 0) return 1.0;
if (n < 0) return
pangkat(1.0/x, - n ) ;
return x*pangkat(x, n-1);
}
}
Keluaran Program
-3 0.125 0.125
-2 0.25 0.25
-1 0.5 0.5
0 1.0 1.0
1 2.0 2.0
2 4.0 4.0
3 8.0 8.0
4 16.0 16.0
5 32.0 32.0
6 64.0 64.0
24. Tulis dan ujilah metode rekursif yang menghasilkan angka kuadrat ke-n.
Penyelesaian
public class
MetodeKuadrat {
public static void
main(String[] args) {
for (int i = 0; i <
200; i++)
if (apaKuadrat(i)) System.out.println(i + " adalah angkat kuadrat.");
}
static boolean
apaKuadrat(long n) {
long jum = 0;
long i = 1;
while (jum < n) {
jum += i;
i += 2 ;
}
return (jum == n);
}
}
Keluaran Program
0 adalah angkat kuadrat.
1 adalah angkat kuadrat.
4 adalah angkat kuadrat.
9 adalah angkat kuadrat.
16 adalah angkat kuadrat.
25 adalah angkat kuadrat.
36 adalah angkat kuadrat.
49 adalah angkat kuadrat.
64 adalah angkat kuadrat.
81 adalah angkat kuadrat.
100 adalah angkat kuadrat.
121 adalah angkat kuadrat.
144 adalah angkat kuadrat.
169 adalah angkat kuadrat.
196 adalah angkat kuadrat.
25. Implementasikanlah fungsi Babbage secara rekursif. Ujilah
program Anda dengan memanggil kedua versi fungsi (iteratif dan rekursif) untuk
memeriksa hasil program.
Penyelesaian
public class
MetodeBabbageRekursif {
public static void main(String[] args) {
for (int i = 0; i <
10; i++)
System.out.println("\tBabbage("
+ i + ") = " + f2(i)
+ " = " + f1(i));
}
static long f2(int n) {
if (n < 1) return 41;
return f2(n-1) + 2*n;
}
static long f1(int n) {
return n*n + n + 41;
}
}
Keluaran Program
Babbage(0) = 41 = 41
Babbage(1) = 43 = 43
Babbage(2) = 47 = 47
Babbage(3) = 53 = 53
Babbage(4) = 61 = 61
Babbage(5) = 71 = 71
Babbage(6) = 83 = 83
Babbage(7) = 97 = 97
Babbage(8) = 113 = 113
Babbage(9) = 131 = 131
26. Tulis dan ujilah metode rekursif yang menghasilkan
angka segitiga ke-n. Angka-angka segitiga adalah 0, 1, 3, 6, 10, 15, 21, 28,
.... Perhatikan bahwa t(n) = t(n-1) + n untuk n > 1.
Penyelesaian
public class
MetodeSegitiga {
public static void main(String[] args) {
for (int i = 0; i <
10; i++)
System.out.println(i +
"\t" + t(i));
try { System.in.read(); }
catch (Exception e) { }
}
static long t(int n) {
if (n < 2 ) return n;
return t(n-1) + n;
}
}
Keluaran Program
0 0
1 1
2 3
3 6
4 10
5 15
6 21
7 28
8 36
9 45
No comments:
Post a Comment