kodbankasi http://kodbankasi.org/kodbankasi

Java recursive functions(Yinelemeli Fonksiyonlar)

Sıradaki konumuz yinelemeli fonksiyonlar yani ingilizce deyimiyle recursive functions. Yinelemeli fonksiyonlar içerisinde kendisini çağıran fonksiyonlar demektir. Peki ne demek kendi içerisinde tekrar kendini çağırmak. Hemen bir örnekle açıklayalım. Yinelemeli fonksiyon denildiğinde her programlama dilinde temel birkaç örnek vardır. O da faktoriyel hesaplayan program ve fibonacci sayılarının hesaplayan program. Özellikle vize yada final sınavlarında da sık sorulan sorulardandır.

Dışarıdan girilen sayının faktoriyelini Hesaplayan Program:

import java.util.Scanner; //
class faktoriyel{
// Özyinelemeli(Recursive) Fonksiyonumuz
static int faktoriyel(int fak) {
if (fak==0) {
return 1;
}
else{
return fak*faktoriyel(fak-1); // burada faktoriyel fonksiyonumuz return le kendini tekrar çağırıyor.
}
}
// main(ana) fonksiyonumuz
public static void main(String[] args) {
Scanner oku = new Scanner(System.in);
System.out.println("Bir sayı giriniz");
int fak=oku.nextInt();
int sonuc=faktoriyel(fak);
System.out.println("Faktoriyel sonucu = "+sonuc);
}
}

Dediğim gibi bu fonksiyonlara en iyi örneklerden birisi fibonacci dizisi hesaplayan programdır. Hemen kodlarını yazalım.

Fibonacci Dizisi Hesaplayan Program

Fibonacci dizisi kendinden 0 dan başlayarak kendinden bir önceki sayıyı toplayarak giden bir dizidir. Örnek olarak:

0+1=1 , 1+2=3 , 3+2=5 , 5+3=8 , 8+5=13 , …. diye gider.

import java.util.Scanner;
class fibonacci{
//Recursive(<strong>Özyinelemeli</strong> )Fonksiyonumuz
static int fibo(int n) {
if (n <= 1) {
return n;
}
else {
return fibo(n-1) + fibo(n-2); // return ile recursive ediyoruz.
}
}
// main(ana) fonksiyonumuz
public static void main(String[] args) {
Scanner oku = new Scanner(System.in);
System.out.println("Fibonacci uzunlugu giriniz");
int fib=oku.nextInt();
int sonuc=fibo(fib);
System.out.println("Fibonacci sonucu = "+sonuc);
}
}

Evet arkadaşlar. Elimden geldiğince recursive fonksiyonları anlatmaya çalıştım. Bir sonraki makalemizde görüşmek dileğiyle…

Bir önceki yazımız olan Javada ++ ve -- operatörleri başlıklı yazımızı da inceleyebilirsiniz.

7 Yorumlar

  1. Vize sorumdu ikisi de.Sitenizden bulmuştum.İyiki makale yazmışsınız :)

  2. Recursive ile yarı çapı 3 olan dairenin alanına 3*80 zoom yapılıyor yapılan zoom dan sonra dairenin alanın toplamı kaç olur yardımcı olabilir misiniz?

  3. Çok tuhaf bir durum, tamamen iyi niyetle yazıyorum zira anlamak için çok zaman harcadım.
    ya fibonaccinin tanımı yanlış ya da program.
    fibonacci 0 ‘dan başlayarak kendinden bir öncekini toplayarak giden bir dizi ise kendinden bir önceki nedir!?(-1) veya (85)
    sanırım fibonacci için: öyle bir dizidir ki dizinin ilerleyişi kendinden bir önceki lemanı üzerine toplayıp sıradaki elemanı oluşturarak ilerler dizinin oluşması için ilk iki eleman değeri verilmelidir.

    fonksiyona gelelim

    Sanırım verdiğimiz değer dizinin o verdiğimiz değerdeki sırada olan elemanı verecek şekilde yazılmaya çalışılmış. o zaman
    dizimiz için evrensel tanım olmalı
    yani
    fibonacci
    0 dan başlayıp ikinci elemanı 1 olan ve kendinden bir öncekini toplayarak giden bir dizidir yani

    0, 1 , 1+0=1, 1+1=2, 1+2=3, 2+3=5, 3+5=8, 5+8=13, 8+13=21, 13+21=34, 21+34=55, …
    şeklinde.
    böylelikle dizinin,
    1. elemanı 0
    2. 1
    3. 1
    4. 2
    5. 3
    6. 5
    7. 8
    8. 13
    9. 21
    10. 34
    11. 55 dır.

    böylelikle sizin kısa koda 8 verince 13 çıkmalı

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak.

Bu yazı da ilginizi çekebilir !

Java – Enumarations

Enumarations : numaralandırma bir sınıf tipi gibi tanımlanarak kullanılan veri türleridir.enumaration tanımlanırken enum anahtar sözcüğü ...

bursa Escort ilan escort bodrum izmit escort Kusadasi escort eskisehir escort escort bursa