| 
| 
 | Вопрос # 5 493/ вопрос открыт / | 
 |  Здравствуйте, уважаемые эксперты!Помогите написать прогу для вычисления чисел фибоначчи рекурсивным способом
 
|  |   Вопрос задал: Aristotel (статус: Посетитель)Вопрос отправлен: 11 июля 2011, 12:43
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Вадим К Здравствуйте, Aristotel!
 function fib(n:integer):integer;
begin
  if (n = 1) or (n = 2) then result := 1
  else result := fib(n - 1) + fib(n-2);
end;на форму ставим edit1 для ввода, и label для вывода результата. И конечно кнопку, по которой будет производится расчет. Обработчик клика будет такой 
   Label1.caption := Intttostr(fib(strtoint(edit1.text))); 
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 11 июля 2011, 12:48
 Оценка за ответ: 5
 Комментарий к оценке: А вот этот кусок писать где? |  
 Мини-форум вопросаВсего сообщений: 31; последнее сообщение — 11 июля 2011, 15:36; участников в обсуждении: 4. Страницы: [1] [2] [Следующая »]  11 июля 2011, 12:49: Вопрос перемещён из тематического раздела Delphi » Работа с компонентами и библиотеками в раздел Delphi » Общие вопросы по программированию модератором Вадим К 
|   | Вадим К (статус: Академик), 11 июля 2011, 12:51 [#1]:какой именно? Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Aristotel (статус: Посетитель), 11 июля 2011, 12:53 [#2]:Который начинается со слова function? |  
|   | Вадим К (статус: Академик), 11 июля 2011, 12:54 [#3]:например сразу после слова implementation (в следующей строке, естественно). Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Aristotel (статус: Посетитель), 11 июля 2011, 12:55 [#4]:Понятно сейчас попробую-если что-напишу Так что пока что не уходи отсюда плиз.
 |  
|   | Gooddy (статус: 3-ий класс), 11 июля 2011, 12:56 [#5]:Мне так кажется что он весь код после end. вставит xD 
 Вместе с текстом ответа xD
 Чисти код! Чисти код! Чисти код! |  
|   | Aristotel (статус: Посетитель), 11 июля 2011, 13:00 [#6]:Да ладно я не такой тупой Кстати всё заработало спасибо большое
 Но у меня вопрос-до какого числа такая программа будет считать?
 |  
|   | Gooddy (статус: 3-ий класс), 11 июля 2011, 13:02 [#7]:Aristotel: ну тогда ладно. Работать будет до 50-60 числа фибонначи. Но уже на 30-ом будет очень долго вычислять результат.
 50-ое число фибонначи таким методом будет считаться наверное час.
 Чисти код! Чисти код! Чисти код! |  
|   | Aristotel (статус: Посетитель), 11 июля 2011, 13:04 [#8]:А можно как то сделать чтобы больше чисел вычислял? |  
|   | Gooddy (статус: 3-ий класс), 11 июля 2011, 13:08 [#9]:Можно. Но скорость вычисления всё равно будет низкой. Сейчас в тип integer может поместиться возможно даже 100-ое число, но вычислить его таким методом в нормальные сроки не получится. Чисти код! Чисти код! Чисти код! |  
|   | Gooddy (статус: 3-ий класс), 11 июля 2011, 13:09 [#10]:Есть конечно метод итерации, с помощью которого числа фибоначчи можно вычислить оочень быстро. Но в условии написано рекурсивно.
 Чисти код! Чисти код! Чисти код! |  
|   | Aristotel (статус: Посетитель), 11 июля 2011, 13:13 [#11]:Да только рекурсией |  
|   | Aristotel (статус: Посетитель), 11 июля 2011, 13:14 [#12]:((У меня на число 50-вычислил -298632863 |  
|   | Gooddy (статус: 3-ий класс), 11 июля 2011, 13:16 [#13]:Хм. Тогда замени тип integer на int64 во всей программе. Чисти код! Чисти код! Чисти код! |  
|   | Aristotel (статус: Посетитель), 11 июля 2011, 13:16 [#14]:на 47 начинает выдавать отрицательные числа |  
|   | Gooddy (статус: 3-ий класс), 11 июля 2011, 13:17 [#15]:И вот эту строчку на 
 Label1.caption := Int64ttostr(fib(strtoint64(edit1.text)));
 Чисти код! Чисти код! Чисти код! |  
|   | Aristotel (статус: Посетитель), 11 июля 2011, 13:19 [#16]:Во спс-работает нормально |  
|   | Aristotel (статус: Посетитель), 11 июля 2011, 13:21 [#17]:А вот когда изменяю вот эту строчку-пишет Undeclared identifier: 'Int64tostr'
 |  
|   | Gooddy (статус: 3-ий класс), 11 июля 2011, 13:21 [#18]:Это для саморазвития или задание? Для задания как то поздно. Чисти код! Чисти код! Чисти код! |  
|   | Aristotel (статус: Посетитель), 11 июля 2011, 13:23 [#19]:Не ну я сделал как ты сказал-вот и говорю что получилось |  
|   | Gooddy (статус: 3-ий класс), 11 июля 2011, 13:23 [#20]:Aristotel: по поводу строчки Label1.caption := Intttostr(fib(strtoint(edit1.text)));
 
 Менять как оказывается не надо, у обоих функций есть перегруженные варианты.
 
 Так это задание или для саморазвития? Для саморазвития могу написать пример итерационного вычисления сравнишь скорость.
 Чисти код! Чисти код! Чисти код! |  Страницы: [1] [2] [Следующая »]  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |