С++ числа Фибоначчи рекурсия.

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by ZnikiR, 6 Jul 2011.

  1. ZnikiR

    ZnikiR Member

    Joined:
    14 Jan 2009
    Messages:
    117
    Likes Received:
    21
    Reputations:
    -5
    Просьба прокомментируйте код.
    http://pastebin.com/47TfqVHa

    Я немного не могу разобраться - подзапутался, писал Я.
    Вопрос вот в чем не получается ли так, что по 2 раза вычисляется одно и то же значение, перед тем как добавится в вектор.

    Хотелось бы услышать Ваше мнение, как можно улучшить или оптимизировать код.

    И как сделать, чтобы скрипт вычислял члены больше 45, а то потом какая-то ерунда выводится.
    Я вообще не дружу с С++, особенно с выбором типов переменных.
     
  2. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    1.
    Code:
    unsigned long fib(unsigned long n) { if(n <= 1) return n; else return fib(n-1)+fib(n-2); }
    Но, на самом деле лучше сделать без рекурсии просто в цикле

    2. Кэширование уже рассчитанных результатов.
    3. unsigned long вместо unsigned int


    вот тут, например, что-то есть
     
    #2 Chaak, 6 Jul 2011
    Last edited: 6 Jul 2011