![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте, помогите составить алгоритм вычисления такой последовательности: 1+1/1!+2/2!+3/3!+n/n! . n вводится пользователем.
она должна быть рекурсивной или подобной, как этот алгоритм : Код:
function FacRecursive(n: Word): LongInt; begin if n > 1 then Result := n * FacRecursive(n - 1) else Result := 1; end; |
#2
|
||||
|
||||
![]() Рекурсия - зло. : )
Если прям очень надо с рекурсией - то берется приведенный код и считается в цикле. Будет частично рекурсивная. А если стек совсем не жалко - можно и общую рекурсию сделать. Псевдокод: Код:
Res(n) = n/FacRecursive(n)+Res(n-1) з.ы. Чему людей учат? Рекурсия в рекурсии... Экстремальный кодинг наоборот: задача должна выполняться дольше определенного времени и пожирать все доступные процессу ресурсы. jmp $ ; Happy End! The Cake Is A Lie. Последний раз редактировалось Bargest, 30.05.2012 в 19:50. |
Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
old (30.05.2012)
|
#3
|
||||
|
||||
![]() Рекурсия, конечно, дело красивое и хорошее, но, если задача не сводится к написанию функции для нахождения факториала, то лучше написать как-то так:
Код:
program Project1; {$APPTYPE CONSOLE} uses SysUtils; Var Sum: Extended; F: Int64; i, n: Word; begin Write('N = '); ReadLn(N); F:=1; Sum:=1; For i:=1 To N Do Begin Sum:=Sum+1/F; F:=F*i; End; WriteLn; WriteLn('Sum = ', Sum:1:14); WriteLn; WriteLn('Press ENTER!'); ReadLn; end. Чем больше знаешь, тем сильнее осознаёшь, что знаешь гораздо меньше, чем не знаешь!.. |
Этот пользователь сказал Спасибо DelphiM0ZG за это полезное сообщение: | ||
old (30.05.2012)
|
#4
|
||||
|
||||
![]() Разумеется, такое решение куда лучше. Но задание гласит: "использовать рекурсию". Следовательно, преподавателю оно не понравится.
З.Ы. DelphiM0ZG, дьявольская репутация. ![]() jmp $ ; Happy End! The Cake Is A Lie. |
#5
|
||||
|
||||
![]() Да, репутацию заметил! Просто, в другом месте увидел такую хорошую идейку - решил поделиться.
Чем больше знаешь, тем сильнее осознаёшь, что знаешь гораздо меньше, чем не знаешь!.. |