За последние 24 часа нас посетили 21917 программистов и 988 роботов. Сейчас ищут 648 программистов ...

Числа фибоначчии

Тема в разделе "Решения, алгоритмы", создана пользователем Adil, 4 фев 2008.

Статус темы:
Закрыта.
  1. Adil

    Adil Активный пользователь

    С нами с:
    21 сен 2006
    Сообщения:
    280
    Симпатии:
    0
    Вот сидел и решил просто вывести все числа фибоначчи до 100... незнаю, то ли это из-за ночи, но я никак немогу этот алгоритм продумать... с таблицей пифагора быстро справился, а вот до этого никак немогу додуматься. Пожалуйста дайте мне маленькую подсказку... мне не нужно готовое решение... я это ради мышления хочу просто додуматься... маленькую подсказку...
     
  2. Adil

    Adil Активный пользователь

    С нами с:
    21 сен 2006
    Сообщения:
    280
    Симпатии:
    0
  3. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    э-э-э...
    ну... создаешь массив, вбиваешь в него два элемента (1 и 1) и в цикле вычисляешь fibb[n]=fibb[n-1]+fibb[n-2]
    выход из цикла по fibb[n]>100 и вперед
     
  4. Adil

    Adil Активный пользователь

    С нами с:
    21 сен 2006
    Сообщения:
    280
    Симпатии:
    0
    тут [n] например показывает fibb[1], fibb[2], fibb[3] ... ???

    До меня что-то недоходит... сяду еще раз хорошенько подумаю...
     
  5. Adil

    Adil Активный пользователь

    С нами с:
    21 сен 2006
    Сообщения:
    280
    Симпатии:
    0
    блин... все гениальное просто...

    Код (Text):
    1. <?php
    2. $fibo1=1;
    3. $fibo2=1;
    4.  
    5. for ($i=0; $i<=100; $i++)  {
    6.     $fibo=$fibo1+$fibo2;
    7.     $fibo2=$fibo1;
    8.     $fibo1=$fibo;
    9.     print $fibo."<br>";
    10. }
    11. ?>
     
  6. Adil

    Adil Активный пользователь

    С нами с:
    21 сен 2006
    Сообщения:
    280
    Симпатии:
    0
    но эта формула до меня не дошла... может поясните... заранее спасибо...
     
  7. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    рекурсией делай )))
     
  8. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    Ganzal угу, двойной ))
     
  9. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    видел в какой-то книге
    PHP:
    1. <?php
    2. function fib($n)
    3. {
    4. if($n == 0 || $n==1)
    5.   {
    6.     return 1;
    7.   }else
    8.   {
    9.     return fib($n-2)+fib($n-1);
    10.   }
    11. }
    12. ?>
     
  10. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    угу, книги такое пишут. Только стек переполнится раньше 100.
    домашнее задание: сделать линейную, а не квадратичную рекурсию.
     
  11. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    зачем тут вообще рекурсия? :)
     
  12. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Вот после таких книг и выростают "быдло-кодеры" после которых переписывать всё заново надо.
    +1

    Курите люди массивы, и никакой рекурсии...
    PHP:
    1. <?php
    2. $array = array(1, 1);
    3. while (is_int(end($array)))
    4.     array_push($array, end($array) + prev($array));
    5. print_r($array);
    6. ?>
     
  13. Adil

    Adil Активный пользователь

    С нами с:
    21 сен 2006
    Сообщения:
    280
    Симпатии:
    0
    Vladson
    почему в твоем примере выводятся только 46 чисел фибоначчи???

    P.S. у меня php смогла отобразить только до 1473 числа:
    1473= 1.30698922376E+308
     
  14. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Что за идиотский в прямом смысле вопрос ?
    Я написал чтоб она выдала 46, столько она и выдала.
     
  15. guest2013

    guest2013 Активный пользователь

    С нами с:
    19 ноя 2007
    Сообщения:
    109
    Симпатии:
    0
    dark-demon, более того, для расчета значения любого члена последовательности Фибоначи вообще не надо знать два его предыдущих.
    [​IMG]
     
  16. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    guest2013, начиная с какого n числа фибоначчи у нас становятся иррациональными дробями? :)
     
  17. guest2013

    guest2013 Активный пользователь

    С нами с:
    19 ноя 2007
    Сообщения:
    109
    Симпатии:
    0
    Что значит у "нас"?
     
  18. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    речевой оборот
     
  19. Штаны

    Штаны Guest

    Сначала нужно выяснить, что ты называешь иррациональными дробями. Лично я о таких первый раз слышу. Уж не выдумал ли ты их? :)
     
  20. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
  21. Штаны

    Штаны Guest

    Да, есть рациональные числа, есть иррациональные числа… Есть рациональные дроби, но иррациональных дробей нет. А нет их потому, что их нельзя наградить какими-либо свойствами, которые отсутствуют у уже введенных типов дробей. Не выдумывай :) // Ну и с приставкой ты маху дал, она в слове иррациональный не «и» а «ир».
     
  22. guest2013

    guest2013 Активный пользователь

    С нами с:
    19 ноя 2007
    Сообщения:
    109
    Симпатии:
    0
    Эта формула не дает "иррациональных дробей". Все значения являются целыми числами. :D Я так понимаю, ты хотел намекнуть про ошибки вычислений по этой формуле?
    Так ошибка вычислений зависит в первую очередь от погрешности вычислительной техники. Если считать на деревянных счетах, то ошибка будет одна, а на калькуляторе 60-х годов - другая.
    Если считать на калькуляторе, где количество значащих цифр ~15, тогда я задам тебе наводящий вопрос аналогичный этому:
    начиная с какого n числа последовательности Fn=3^n у нас становятся "иррациональными дробями"? :wink:
     
  23. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    Штаны, желаю тебе удачи в изучении математики и лингвистики
    guest2013, каюсь, интуиция меня подвела :)
     
  24. Штаны

    Штаны Guest

    Говоришь на меня, переводишь на себя :)
     
  25. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    а также желаю тебе побыстрее окончить детский сад :)
     
Статус темы:
Закрыта.