-
Üyelik
18.10.2016
-
Yaş/Cinsiyet
27 / E
-
Meslek
Bilgisayar Programcısı
-
Konum
İstanbul Avrupa
-
Ad Soyad
M** T**
-
Mesajlar
83
-
Beğeniler
36 / 31
-
Ticaret
2, (%100)
package javaapplication10;
public class JavaApplication10 {
private static int islem_1(int sayi)
{
if (sayi == 2)
return 2;
if (islem_2(sayi))
return sayi + islem_1(sayi-1);
else
return islem_1(sayi-1);
}
private static boolean islem_2(int sayi)
{
for (int i = 2; i if (sayi % i == 0)
return false;
return true;
}
public static void main(String[] args) {
System.out.println(islem_1(5));
}
}
bu çıktı sorusunun mantığını kısaca anlatabilecek var mıdır? fazla detaya inmenize gerek yok ancak mantığını bir türlü kavrayamadım..
şimdiden teşekkürler
-
Üyelik
22.04.2014
-
Yaş/Cinsiyet
25 / E
-
Meslek
Arayüz Geliştirici
-
Konum
İstanbul Avrupa
-
Ad Soyad
M** A**
-
Mesajlar
306
-
Beğeniler
76 / 67
-
Ticaret
26, (%100)
Java hayatımda hiç kullanmadım ama: (java mı onuda bilmiyorum)
Öncelikle islem_2 ne yapıyor onu bilmek gerek.
islem_2(5) ile ne oluyor..
2,3,4 e kadar gelip her sayının 2 ile modunu alıyor.
2 % 2 = 0 olduğundan false
3 % 2 = 1 olduğundan true
4 % 2 = 0 olduğundan false
Şimdi geçelim diğer kodlara.
1. islem_1(5) fonksiyonunu çalıştır
2. islem_2(5) fonksiyonu true ise 5 + islem_1(4) yazdır. islem_1(4) çalıştır.
3. islem_2(4) fonksiyonu true ise 4 + islem_1(3) yazdır. islem_1(3) çalıştır.
4. islem_2(3) fonksiyonu true ise 3 + islem_1(2) yazdır. islem_1(2) çalıştır. zaten kodlarda sayi = 2 ise direk 2 yazdır var.
vs.vs. uzar gider. Bunların birde false ı var.
Biraz abarttım tabii.. Beynimde yandı..
1 kişi bu mesajı beğendi.