SpiderS_DangeR Mesaj tarihi: Kasım 25, 2009 Paylaş Mesaj tarihi: Kasım 25, 2009 Şimdik şöyle bi kod yazıcam. P(a,b) ikilisi var, yazıcağım kod a sayısının b sayının toplamı olarak kaç farklı şekilde yazılabileceğini buluyor. Örn: P(4,2) 4=3+1 ve 2+2. P(4,3) olsaydı sadece 1+1+2 olucaktı vs. Elimizde şu bilgiler var P(a,b) için a=b ise 1 şekilde, a b=2 için a/b nin aşağı yuvarlanmış hali şekilde yazılabiliyor. Örn: P(7,2) için (7/2)=(3,5)=3 farklı şekilde. Ayrıca P(a,b) = P(a-1,b-1)+P(a-b,b) olduğunu biliyoruz. Amaç verilen a b ikilisini en son yazdığım işlemi gerçekleştirerek yukardaki bildiğimiz ikililere indirmek. Örn: P(9,4) = P(8,3) + P(5,4) = P(7,2) + P(5,3) + P(4,3) + P(1,4) Mesela buraya kadar getirdikten sonra P(7,2) ikilisinin kaç şekilde yazılabildiğini(3) ve P(1,4) ikilisinin 0 şekilde yazılabildğini biliyoruz. Aynı işlemi P(5,3) ve P(4,3) ikilisine yaparak sonuca ulaşmaya çalışıyoruz. Fakat bunu yapan bir kod yazmak için nasıl bir yol izleyeceğimi bir türlü bulamadım. Help plz Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
El-Barto Mesaj tarihi: Kasım 25, 2009 Paylaş Mesaj tarihi: Kasım 25, 2009 Sen kendin nerdeyse kodu yazmışsın yani. Javada büyük ihtimalle recursive kodu öğretmedikleri için yapamıyosun :D Önce kontrol ediceksin b 2 mi veya a=b mi diye eğer 2'yse floor(a/b) yi return ediceksin. Yok değilse "return P(a-1,b-1)+P(a-b,b);" diyceksin. Küçüle küçüle ya b 2'ye varcak ya a ve b eşitlenicek veya a b'den küçük olucak. En sonunda hepsi birbiyle toplanmış olcak ve ilk çağırdığın P sonucu vercek. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
SpiderS_DangeR Mesaj tarihi: Kasım 25, 2009 Konuyu açan Paylaş Mesaj tarihi: Kasım 25, 2009 evet onu öğretmediler, aslında hiçbişey öğretmediler sdffg. bi deniym bakıym Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
SpiderS_DangeR Mesaj tarihi: Kasım 27, 2009 Konuyu açan Paylaş Mesaj tarihi: Kasım 27, 2009 Birşey daha sorayım. Mesela elimizde x diye bir integer var, x 2 olsun. bende a(x) adında yeni bir integer yaratmak istiyorum, yani x'in o anki değeri neyse integer'ın adı o olacak. Şu durumda a2 olacak mesela. Nasıl olur bu? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Kasım 27, 2009 Paylaş Mesaj tarihi: Kasım 27, 2009 Değişkenin ismini kodu yazarken koyabilirsin sadece. Ne yapmak istiyorsun ki? Yapmaya çalıştığının şeyin daha iyi çözüm yolları olduğuna eminim. :) Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
SpiderS_DangeR Mesaj tarihi: Kasım 27, 2009 Konuyu açan Paylaş Mesaj tarihi: Kasım 27, 2009 Tamam abi ikinci soruyu boşver, biz ilk soruya yoğunlaşalım. Yapmak istediğim şey işte ilk attığım post Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Kasım 27, 2009 Paylaş Mesaj tarihi: Kasım 27, 2009 El-Barto yazmış işte? İlk önce fonksiyonu matematiksel olarak yazmaya çalış. Aşağı yukarı şöyle bir şey olması lazım: { 0, if x < y p(x, y) = { 1, if y = 1 { roundDown(x / 2), if y = 2 { p(x - 1, y - 1) + p(x - y, y), otherwise p fonksiyonun tanımında kendini çağırdığın için rekursiv fonksiyon deniyor. Rekursiv fonksiyon çağırırken argümanların bir şekilde küçülmesi lazım ki bir yerden sonra rekursiv çağrı dursun. Yoksa stack dolana kadar döner durursun. Zaten senin durumunda argümanlar küçülüyor. Bir yerden sonra y 1 ya da 2 ye kadar küçülecek ya da y x'ten büyük hale gelecek ve sonuç çıkacak ortaya. Edit: Rekursif fonksiyonların nasıl çalıştığını anlamakta zorluk çekiyorsan ilk önce rekursif olarak faktöryel hesaplayan ya da OBEB alan bir fonksiyon yaz. Hatta ikisini de yaz. :) Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
SpiderS_DangeR Mesaj tarihi: Kasım 27, 2009 Konuyu açan Paylaş Mesaj tarihi: Kasım 27, 2009 yok beni sorun yaşadığım şey şimdi ilk başta a b ikilisi var, ondan sonra bu 4'e çıkıyor, sonra aynı işlemleri hepsinde yapıyoruz sonra atıyorum 10'a çıkıyo ya, bu yeni a b değerlerini if içinde tekrar denetlettirmeyi yapamadım Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Kasım 27, 2009 Paylaş Mesaj tarihi: Kasım 27, 2009 Sen rekursif fonksiyonları anlamaya bak. Anladığım kadarıyla sen rekursif fonksiyonun yaptığını ek olarak kendin yapmaya çalışıyorsun. Yukarda yazdığım fonksiyona küçük değerler gir (5, 3) ve kağıt üzerinde sonucu hesapla mesela. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
SpiderS_DangeR Mesaj tarihi: Kasım 27, 2009 Konuyu açan Paylaş Mesaj tarihi: Kasım 27, 2009 Tamam öyle yapayım sdf Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Deacon Mesaj tarihi: Kasım 27, 2009 Paylaş Mesaj tarihi: Kasım 27, 2009 http://forum.paticik.com/read.php?6,4186741,page=1#msg-4186746 yukardaki mesajda mirage çok güzel açıklamıştı recursionı:p Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
El-Barto Mesaj tarihi: Kasım 27, 2009 Paylaş Mesaj tarihi: Kasım 27, 2009 Hiç unutmuyorum ilk programlama dersinin ilk gününde rekürsifi öğrenmiştik ve fonksiyon faktoriyel buluyodu. Sanırım en rahat anlaşılan örnek odur :D Şöyle oluyo fonksiyon: Faktoriyel(4) diye çağırıyosun sonuç return Faktoriyel(3)*4; Faktoriyel(3)in sonucu return Faktoriyel(2) * 3 Faktoriyel(2)in sonucu return Faktoriyel(1) * 2 Faktoriyel(1)in sonucu return 1 (çünkü içerde bi ifle hep kontrol ediyosun aldığın sayı 1mi diye. Sonuç olarak en dıştaki fonksiyon şu sonucu vermiş oluyo: return (((1*2) * 3) * 4); Bunda da anlatamadıysam tam olarak kodu yazıp yollucam artık lütfen anla :D Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
SpiderS_DangeR Mesaj tarihi: Kasım 27, 2009 Konuyu açan Paylaş Mesaj tarihi: Kasım 27, 2009 yav rekürsifin nolduğunu anladım zaten ben, sadece nası kullanıcağımı bilmiorm henüz asdf Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
El-Barto Mesaj tarihi: Kasım 28, 2009 Paylaş Mesaj tarihi: Kasım 28, 2009 bak c için faktoriyel kodu bu int factorial(int number) { int temp; if(number <= 1) return 1; temp = number * factorial(number - 1); return temp; } fonksiyonu tekrar çağırıyo içerde. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
SpiderS_DangeR Mesaj tarihi: Aralık 1, 2009 Konuyu açan Paylaş Mesaj tarihi: Aralık 1, 2009 yaptım ahahdsafhsdaf import java.util.Scanner; public class holyholy { static int c = 0; public static void ahmet(int a, int b) { if(a < b) { } else if(a == b) { c++; } else if(b == 2) { c = (int) (c+(Math.floor(a/b))); } else { System.out.println("Son else e girdi"); ahmet(a-1,b-1); ahmet(a-b,b); } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("İki sayı girin: "); int a = sc.nextInt(); int b = sc.nextInt(); ahmet(a,b); System.out.println(c); } } Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
SpiderS_DangeR Mesaj tarihi: Aralık 1, 2009 Konuyu açan Paylaş Mesaj tarihi: Aralık 1, 2009 çok basitmiş yav Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Deacon Mesaj tarihi: Aralık 1, 2009 Paylaş Mesaj tarihi: Aralık 1, 2009 ahmet ne abi :D eahheah. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
SpiderS_DangeR Mesaj tarihi: Aralık 1, 2009 Konuyu açan Paylaş Mesaj tarihi: Aralık 1, 2009 method fsdfdsg Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Aralık 1, 2009 Paylaş Mesaj tarihi: Aralık 1, 2009 Madem basit geldi bir de statik değişken kullanmadan yapıver elin alışsın. Pek hoşlanmayız öyle şeylerden. :) Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
SpiderS_DangeR Mesaj tarihi: Aralık 1, 2009 Konuyu açan Paylaş Mesaj tarihi: Aralık 1, 2009 Tamam deniyim, bi de öm attım onada bakarsan güzel olur sfd Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Öne çıkan mesajlar