Merhabalar bilişim sistemleri mühendisliği 2.sınıf öğrencisiyim. Bugün lab dersinde hoca bir ödev verdi çıktısını yazacakmışız. Şöyle bir kod parçası var; void right(int i, int p, int n, int k)//3.Tur 4,8,1,2 / 4.Tur 12,8,2,2 { cout << i << endl;//2.ÇIKTI=4 3.ÇIKTI=12 4.ÇIKTI=6 5.ÇIKTI=10 6.ÇIKTI=14 if (n == k) return;//n ve k eşit ise down fonksiyonunda geldiği yere right() komutuna döner. else right(i + p, p, n + 1, k); } void down(int i, int p, int n, int k)//1.Tur=8,16,1,1 / 2.Tur=4,8,1,2 { if (n == k) cout << i << endl;//n ve k eşit iken Ekranda i çıktısı gözükür.Eşit değilken aşağıdaki komutu uygulayıp right fonksiyonuna gider. 1.ÇIKTI=8 else right(i, p, 1, k);
if (i == 1) return;//i 1'e eşit olana kadar aşağıdan gider. else down(i / 2, p / 2, 1, k * 2); }
void main() { down(8, 16, 1, 1); }
right fonksiyonunda if(n==k) koşulunu sağladıktan sonra return ederken i,p den düşük oluncaya kadar i'den p'çıkıyor. Bunun nedeninin bilmiyorum. Yardımcı olabilecek var mı?
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.
recursion kullanıyorsun ama ne yaptıgı biraz muallak neyi yapmayı planlıyorsun void recursion fonksiyonlar kullanarak bişiler yazdırmak istiyorsunuz gibi gözüküyor
bunu lab dersinde hoca ödev olarak verdi. f11 ile adımları tek tek izlerken en üstteki right fonksiyonundan return ederken i p'den aldığı değeri , p'den düşük olana kadar çıkarıyor. Bunun nedenini çözemedim.
void right(int i, int p, int n, int k)//3.Tur 4,8,1,2 / 4.Tur 12,8,2,2
{
cout << i << endl;//2.ÇIKTI=4 3.ÇIKTI=12 4.ÇIKTI=6 5.ÇIKTI=10 6.ÇIKTI=14
if (n == k) return;//n ve k eşit ise down fonksiyonunda geldiği yere right() komutuna döner.
else right(i + p, p, n + 1, k);
}
void down(int i, int p, int n, int k)//1.Tur=8,16,1,1 / 2.Tur=4,8,1,2
{
if (n == k) cout << i << endl;//n ve k eşit iken Ekranda i çıktısı gözükür.Eşit değilken aşağıdaki komutu uygulayıp right fonksiyonuna gider. 1.ÇIKTI=8
else right(i, p, 1, k);
if (i == 1) return;//i 1'e eşit olana kadar aşağıdan gider.
else down(i / 2, p / 2, 1, k * 2);
}
void main()
{
down(8, 16, 1, 1);
}
right fonksiyonunda if(n==k) koşulunu sağladıktan sonra return ederken i,p den düşük oluncaya kadar i'den p'çıkıyor. Bunun nedeninin bilmiyorum. Yardımcı olabilecek var mı?
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.