Merhaba arkadaşlar.
Şimdi şöyle bir kod satırı atayım;
Java:
static int f(int x){
if(x == 1){
return 1;
}
return x + f(x-1);
}
Ha bire X değerini azaltıp, 1 olana kadar tekrar kendini tekrar fonksiyon.
1'e kadar azalttığı zaman, if koşulundan ötürü, 1 değerini döndürmesi gerekmez mi?
Yani yukarıdaki tanımlı fonksiyona göre;
Java:
int y = f(10);
System.out.println(y);
Çıktı olarak 1 değerini vermesi lazım gibi duruyor ama vermiyor. Neden vermiyor?
public class Main
{
public static void main(String[] args) {
System.out.println(f(10));
}
static int f(int x){
if (x == 1){
return 1;
}
System.out.println(x);
return f(x-1);
}
}
Şimdi şöyle sen F(3) yaptığın zaman program X sayısına odaklanacak ve 2. return çalışacak.
X = 3 olduğu için nihai dönen değer 3+F(2) olacaktır.
F(2)'de nihai dönen değer 2 + F(1) olacaktır. F(1)'de dönen değer 1 olacaktır.
Toparlarsak aslında F(3) dediğimiz fonksiyon;
3 + 2 + 1 değeri döndürür.
F(4):
4+3+2+1 değeri döndürür.
F(5):
5 + 4 + 3 + 2 + 1 değeri döndürür.
public class Main
{
public static void main(String[] args) {
System.out.println(f(10));
}
static int f(int x){
if (x == 1){
return 1;
}
System.out.println(x);
return f(x-1);
}
}
Şimdi şöyle sen F(3) yaptığın zaman program X sayısına odaklanacak ve 2. return çalışacak.
X = 3 olduğu için nihai dönen değer 3+F(2) olacaktır.
F(2)'de nihai dönen değer 2 + F(1) olacaktır. F(1)'de dönen değer 1 olacaktır.
Toparlarsak aslında F(3) dediğimiz fonksiyon;
3 + 2 + 1 değeri döndürür.
F(4):
4+3+2+1 değeri döndürür.
F(5):
5 + 4 + 3 + 2 + 1 değeri döndürür.
public class Main
{
public static void main(String[] args) {
System.out.println(f(10));
}
static int f(int x){
if (x == 1){
return 1;
}
System.out.println(x);
return f(x-1);
}
}
Şimdi şöyle sen F(3) yaptığın zaman program X sayısına odaklanacak ve 2. return çalışacak.
X = 3 olduğu için nihai dönen değer 3+F(2) olacaktır.
F(2)'de nihai dönen değer 2 + F(1) olacaktır. F(1)'de dönen değer 1 olacaktır.
Toparlarsak aslında F(3) dediğimiz fonksiyon;
3 + 2 + 1 değeri döndürür.
F(4):
4+3+2+1 değeri döndürür.
F(5):
5 + 4 + 3 + 2 + 1 değeri döndürür.