Rekursion()
Rekursion'un sonsuzluk ile bir ilişkisi var. Ben biliyorum ki rekursion'un sonsuzluk ile bir ilişkisi var.
Ihan3t rekursion'un sonsuzluk ile bir ilişkisi olduğunu bildiğimi düşünüyor. Osman %100 biliyor ihan3tin, rekursion'un sonsuzluk ile bir ilişkisi olduğunu ve bunu bildiğimi düşündüğünü. Ama biz inanmıyoruz Osmanın %100 bildiğine, ihan3tin düşündüğüne ve benim rekursion'un sonsuzluk ile bir ilişkisi olduğunu bildiğime.
Mesela bu konuşma oyununu örnek olarak alabiliriz. Bu örnek Rekursion sanatının doğal anlatımı. Bizim bütün düşüncelerimiz, rekursion ile bağdaşıyor.
Rekursion kelimesi latinceden "recurrere" den geliyor ve anlamı "Geri gitmek, geri koşmak". Aslında bu kelimenin anlamı Rekursion fonksiyonlarının ne yaptığını anlamaniza yetiyordur umarım. Evet şimdi olayları elimize alalım, olayın matematik tarafı anlaması kolay ve sizin rekursion programlamanızı kolaylaştırır. Evet bizde fakültede ki geleneklere uyup bu yazımda fonksiyonumuzu geleneklere göre anlatalım.
Matematiksel olarak böyle tanımlanmıştır;
Sonlandırma Kriteri
Extra kırmızı yazdım önemli olduğu için. Eğer rekursion'u kullanmak istiyorsanız bir sonlandırma kriteri belirtmek zorundasınız aksi halde sonsuz bir döngüye sokabilirsiniz. Mesela bir if içinde sonlandırma koşulu sağlanana kadar bir değişken içinde saydırabilirsiniz.
Fakülteden bir örnek;
4! için;
Rekursion Python
Evet bir örnek seçelim fazla uzağa gitmeden biraz önce ("bana göre 4 saat") faktöriyel konusunu ele alalım. Python kodlarınında matematik gibi elegant-kibar olduğunu göreceksiniz
Evet buyrun ama derseniz ki ben bunun çalışma mantığını anlamadım o zaman 2 print ile hemen daha kolay anlayabilmenizi sağlayabiliriz;
Python scriptimizden gelecek sonuç;
iterative bir fonksiyonda yazabiliriz;
Aslında bu konuya verilebilecek en iyi örneklerden biri fibonacci serisidir ama onu yazmakla uğraşamayacağım gibi ("mobilden yazdığım için") direk ihan3t'imin sizlere konusunu atayım aslında orda da tam olarak bu konuya ve dinamik programlamaya değinmeye çalıştı bende az şu kadar bilgim ile bir makale yazdım, sağlıcakla kalın.
Mobilde olduğum için kodlarda ve yazılarda yanlış olabilir, affedin
Bu arada Rekursion;
İngilizce: Recursion
Türkçe: Özyineleme
Vee konuyu bulamadığım için devam yazmaya
Şimdi zamanım olmadığından wikiden fibonacciyi kopyalıcam.
/* Fibonacci dizisi, her sayının kendinden öncekiyle toplanması sonucu oluşan bir sayı dizisidir. Bu şekilde devam eden bu dizide sayılar birbirleriyle oranlandığında altın oran ortaya çıkar, yani bir sayı kendisinden önceki sayıya bölündüğünde*altın orana*gittikçe yaklaşan bir dizi elde edilir. Bu durumda genel olarak n'inci*Fibonacci*sayısı F
şu şekilde ifade edilir. */
Kolay bir fibonacci scripti şu sekilde yapılabilir;
Birde rekursion işlemiyle bakalım;
Bide bunu iterative bir biçimde değistirelim;
Bu kadaaaarrr.
Hayırlı forumlar tekrardan hatalarım var ise affola.
Rekursion'un sonsuzluk ile bir ilişkisi var. Ben biliyorum ki rekursion'un sonsuzluk ile bir ilişkisi var.
Ihan3t rekursion'un sonsuzluk ile bir ilişkisi olduğunu bildiğimi düşünüyor. Osman %100 biliyor ihan3tin, rekursion'un sonsuzluk ile bir ilişkisi olduğunu ve bunu bildiğimi düşündüğünü. Ama biz inanmıyoruz Osmanın %100 bildiğine, ihan3tin düşündüğüne ve benim rekursion'un sonsuzluk ile bir ilişkisi olduğunu bildiğime.
Mesela bu konuşma oyununu örnek olarak alabiliriz. Bu örnek Rekursion sanatının doğal anlatımı. Bizim bütün düşüncelerimiz, rekursion ile bağdaşıyor.
Rekursion kelimesi latinceden "recurrere" den geliyor ve anlamı "Geri gitmek, geri koşmak". Aslında bu kelimenin anlamı Rekursion fonksiyonlarının ne yaptığını anlamaniza yetiyordur umarım. Evet şimdi olayları elimize alalım, olayın matematik tarafı anlaması kolay ve sizin rekursion programlamanızı kolaylaştırır. Evet bizde fakültede ki geleneklere uyup bu yazımda fonksiyonumuzu geleneklere göre anlatalım.
Matematiksel olarak böyle tanımlanmıştır;
Kod:
n! = n * (n-1)!, if n > 1 and f(1) = 1
Sonlandırma Kriteri
Extra kırmızı yazdım önemli olduğu için. Eğer rekursion'u kullanmak istiyorsanız bir sonlandırma kriteri belirtmek zorundasınız aksi halde sonsuz bir döngüye sokabilirsiniz. Mesela bir if içinde sonlandırma koşulu sağlanana kadar bir değişken içinde saydırabilirsiniz.
Fakülteden bir örnek;
Kod:
4! = 4 * 3!
3! = 3 * 2!
2! = 2 * 1
4! için;
Kod:
4! = 4 * 3 * 2 * 1
Rekursion Python
Evet bir örnek seçelim fazla uzağa gitmeden biraz önce ("bana göre 4 saat") faktöriyel konusunu ele alalım. Python kodlarınında matematik gibi elegant-kibar olduğunu göreceksiniz
Kod:
def fakt(n):
*** if n == 1:
******* return 1
*** else:
******* return n * fakt(n-1)
Evet buyrun ama derseniz ki ben bunun çalışma mantığını anlamadım o zaman 2 print ile hemen daha kolay anlayabilmenizi sağlayabiliriz;
Kod:
def fakt(n):
*** print("faktoriyel cagrildi* n = " + str(n))
*** if n == 1:
******* return 1
*** else:
******* res = n * fakt(n-1)
******* print("sonucumuz ", n, " * fakt(" ,n-1, "): ",res)*********
******* return res
***** print(fakt(5))
Python scriptimizden gelecek sonuç;
Kod:
faktoriyel cagrildi n = 5
faktoriyel cagrildi n = 4
faktoriyel cagrildi n = 3
faktoriyel cagrildi n = 2
faktoriyel cagrildi n = 1
sonucumuz 2 * fakt( 1 ): 2
sonucumuz 3 * fakt( 2 ): 6
sonucumuz 4 * fakt( 3 ): 24
sonucumuz 5 * fakt( 4 ): 120
120
Kod:
def iterative_fakt(n):
*** sonuc = 1
*** for i in range(2,n+1):
******* sonuc *= i
*** return sonuc
Aslında bu konuya verilebilecek en iyi örneklerden biri fibonacci serisidir ama onu yazmakla uğraşamayacağım gibi ("mobilden yazdığım için") direk ihan3t'imin sizlere konusunu atayım aslında orda da tam olarak bu konuya ve dinamik programlamaya değinmeye çalıştı bende az şu kadar bilgim ile bir makale yazdım, sağlıcakla kalın.
Mobilde olduğum için kodlarda ve yazılarda yanlış olabilir, affedin
İngilizce: Recursion
Türkçe: Özyineleme
Vee konuyu bulamadığım için devam yazmaya
Şimdi zamanım olmadığından wikiden fibonacciyi kopyalıcam.
/* Fibonacci dizisi, her sayının kendinden öncekiyle toplanması sonucu oluşan bir sayı dizisidir. Bu şekilde devam eden bu dizide sayılar birbirleriyle oranlandığında altın oran ortaya çıkar, yani bir sayı kendisinden önceki sayıya bölündüğünde*altın orana*gittikçe yaklaşan bir dizi elde edilir. Bu durumda genel olarak n'inci*Fibonacci*sayısı F
Kolay bir fibonacci scripti şu sekilde yapılabilir;
Kod:
a,b=0,1
while b<100:
print (b)
a,b=b,a+b
Birde rekursion işlemiyle bakalım;
Kod:
def fib(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return fib(n-1) + fib(n-2)
Bide bunu iterative bir biçimde değistirelim;
Kod:
def fibi(n):
eski, yeni = 0, 1
if n == 0:
return 0
for i in range(n-1):
eski, yeni = yeni, eski + yeni
return yeni
Hayırlı forumlar tekrardan hatalarım var ise affola.



