+ Cevap Yaz
6 sonuçtan 1 ile 6 arası gösteriliyor

Konu: Fibonacci serisi ?

  1. #1
    Cevizci
    Üyelik Tarihi
    02/2003
    Mesaj
    170

    Fibonacci serisi ?

    Merhabalar,

    belgeler.org taki python-tutorial ını okurken,

    >>> # Fibonacci serisi:
    ... # iki elemanın toplamı bir sonraki elemanı verir
    ... a, b = 0, 1
    >>> while b < 10:
    ... print b
    ... a, b = b, a+b
    ...
    1
    1
    2
    3
    5
    8

    örneğine rastladım.
    ancak,

    a,b=b,a+b ifadesini anlamadım.

    a=b
    b=a+b

    şeklinde mi diye kontrol ettim ancak bu ikisi aynı sonucu vermiyor.

    buradaki işlem nedir acaba?

  2. #2
    Registered User
    Üyelik Tarihi
    07/2002
    Mesaj
    6,166

    a 0 b 1 döngüye girmeden.

    Döngüye girince önce b'yi yazıyor (1).

    Sonra a 1 b 1 oluyor.

    İkinci turda gene b'yi yazıyor (1)

    Sonra a 1 b 2 (a=1 + b=1) oluyor.

    Ucuncu turda gene b'yi yazıyor (2)

    Sonra a 2 b 3 oluyor (a=1 + b=2 )

    a,b = a,a+b güzel bir değişken atamasıymış. Hoşuma gitti.

  3. #3
    Cevizci
    Üyelik Tarihi
    02/2003
    Mesaj
    170

    Sağol hocam ama;

    "Sonra a 1 b 2 (a=1 + b=1) oluyor." da b nasıl 2 oldu yine anlamadım.

    a,b=a,a+b nin klasik karşılığı ne acaba?

  4. #4
    Registered User
    Üyelik Tarihi
    07/2002
    Mesaj
    6,166

    Dongu ikinci kere donuyor cunku. b 10 olana kadar da donecek. Bir onceki basamakta a 1 ve b 1 olduğu için b = a + b 'den 2 oluyor.

    Bunu bu tip degisken atamasi yapmadan yapmak icin bir c degiskeni gerekebilir. Cunku burada a'ya degisken atama işlemiyle b'ye a ile b'nin toplamını atama işlemi aynı satırda olduğu için a'nın değeri ikinci atamada da aynı olmuş. Ama bunu klasik şekilde yapsaydık (farklı satırlarda) a'nın değeri değiştiği için yeni atamada da b'nin değeri artacaktı.

    Ornegin PHP ile :

    PHP Kodu:
    $a 0;
    $b 1;

    while ( 
    $b 10 ) {
      print 
    $b;

      
    $a $b;
      
    $b $a $b;

    dersek bu durumda ekrana :

    1,
    2,
    4,
    vs şeklinde çıktı alırız.

    Şöyle yazmamız gerekiyor :

    PHP Kodu:
    $a 0;
    $b 1;
    $c 0;

    while ( 
    $b 10 ) {
      print 
    $b;

      
    $c $a;
      
    $a $b;
      
    $b $c $b;

    Bu durumda :

    1,
    1,
    2,
    3,

    gibi çıktı alırız.

  5. #5
    Eski Cevizci myavuzselim Adlı Üyenin Profil Grafiği
    Üyelik Tarihi
    05/2004
    Mesaj
    950

    Biraz parantez ise yarayabilir:
    (a,b) = (b,a+b)

    Bunu da soyle dusunebilirsin:
    eski_a = a
    eski_b = b
    a = eski_b
    b = eski_a + eski_b

  6. #6
    Cevizci
    Üyelik Tarihi
    02/2003
    Mesaj
    170

    "...Cunku burada a'ya degisken atama işlemiyle b'ye a ile b'nin toplamını atama işlemi aynı satırda olduğu için..."

    şimdi jeton düştü. işin sırrı buymuş demek.

    sağolun. durup duruken meşguliyet verdiğim için kusuruma bakmayın.

    (ciddi ciddi python a merak saldım daha sorularım gelebilir izninizle)

+ Cevap Yaz

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

     

Benzer Konular

  1. Amd mi ? pentium serisi mi ?
    By Alper KILIÇ in forum Donanım
    Cevap: 5
    En Son Mesaj: 28/06/2005, 20:15
  2. Zyxel 600 serisi
    By Raiden in forum Ağ / Güvenlik
    Cevap: 7
    En Son Mesaj: 21/02/2005, 14:29
  3. fibonacci
    By o_mlk in forum Java / JSP / JSF
    Cevap: 17
    En Son Mesaj: 09/04/2004, 12:45
  4. pre-2.6 serisi yaklasıyor
    By RaiST in forum GNU / Linux / UNIX / BSD / Pardus
    Cevap: 14
    En Son Mesaj: 02/06/2003, 18:03

Bookmarks

Mesaj Yazma Hakları

  • Yeni mesajgöndermezsiniz
  • Cevap yazamazsınız
  • Dosya ekleyemezsiniz
  • Mesajınızı düzenleyemezsiniz