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ı? |
Bildirim