Java Döngüler nasıl anlaşılır?

Mute and X

Centipat
Katılım
27 Haziran 2022
Mesajlar
239
Çözümler
4
1688049499275.png

Sarı bölgelere aldığım kodlar çalışıyor. Aslında bütün kodlar çalışıyor ama 18-19. satırlara girdiğim kodlar işe yaramıyor. Uygulama 0 ve her pozitif sayının faktöriyelini doğru hesaplıyor ama negatif sayı koyduğumda sonuç hep 1 çıkıyor.

Sonucun 1 çıkmasını yasaklayabilirdim ama bu sefer de 0 ve 1 faktöriyel hesaplanırken sıkıntıya düşüyor.
18-19. satırlardaki kodun nasıl çalışmasını sağlayabilirim?
Girdiyi 0'dan küçük seçsem bile o kısım çalışmıyor.

Java:
Faktoriyelini hesaplamak istediginiz sayiyi giriniz:
-2 (kullanıcı girdisi)
Negatif sayilarin faktoriyeli yoktur
1
 
Son düzenleme:
En iyisi önce algoritmasını kafanızda bir daha düşünün, sonra bu algoritmayı bilgisayara nasıl anlatabilirsiniz diye satır satır baştan yazın kodunuzu.

1)
Birisi size geldi, -2nin faktoriyelini bana hesapla diyor:

Düşünürsünüz, faktoriyel fonksiyonu negatif olmayan sayılar için tanımlıdır, -2 ne, negatif bir sayı.
Karşınızdaki adama "negatif sayıların faktoriyeli yoktur" diye cevap verirsiniz.

2)
Bir dahaki sefer 3ün faktoriyelini hesapla diyor:

Düşünürsünüz, faktoriyel fonksiyonu negatif olmayan sayılar için tanımlıdır, 3 ne, bu kurala uyan bir sayı.
Bu sefer hesaplama yaparsınız, 3*2*1 = 6
Karşınıdaki adama "6" diye cevap verirsiniz.

Sizin kod şu anda böyle çalışmıyor, kullandığınız idenin debug özelliğini kullanın lütfen satır satır.
 
while döngüsünün çalışması için f değerinin sıfırdan büyük olması gerekiyor. f değeri sıfırdan büyükse haliyle hiçbir zaman if fonksiyonu çalışmaz.
 
while döngüsünün çalışması için f değerinin sıfırdan büyük olması gerekiyor. f değeri sıfırdan büyükse haliyle hiçbir zaman if fonksiyonu çalışmaz.
O zaman while yerine en üstte if digerinde de else kullanmam gerekiyordu ama if olursa da bu işlemleri yapamam sanırım kafam çok karıştı..
 
Kafan niye karışıyor anlamak zor, programın belirli bir akışı var, kodlar sırayla yürütülüyor, kontrolü while döngüsü içinde yapmak yerine 14. satırda
Java:
if(f<0) {
  System.out.println("uyarı");
  System.exit();
}

şeklinde ekleseydin zaten istediğin olacaktı.
 
Kafan niye karışıyor anlamak zor, programın belirli bir akışı var, kodlar sırayla yürütülüyor, kontrolü while döngüsü içinde yapmak yerine 14. satırda
Java:
if(f<0) {
  System.out.println("uyarı");
  System.exit();
}

şeklinde ekleseydin zaten istediğin olacaktı.
System.exit() komutunu daha öğrenmedim hocam. Dediginiz gibi yapınca 1 çıktısı göstermeden sadece negatif sayıların faktöriyeli yoktur yazısı çıktı.
return; ile aynı işe yarıyor sanırım bu.
 
F hiç bir zaman 0'dan küçük olmadığı için if koşulu çalışmıyor.
F en son f=0 oluyor ve çalışmayı bırakıyor.

Eğer negatif bir sayı girersen en başta F<0 şartı çalışır.
 

Geri
Yukarı