Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2013, 20:23   #1
dimka123
Пользователь
 
Регистрация: 25.12.2011
Сообщений: 96
Восклицание Подпрограммы.Рекурсивные формулы

Процедуры функции. Паскаль
fact.jpg
dimka123 вне форума Ответить с цитированием
Старый 20.11.2013, 20:33   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
function fac(i:integer):Integer;
var r:integer;
begin
 r:=1; while i>1 do begin r:=r*i; dec(i); end; fac:=r;
end;
И
Код:
...:=(fac(fac(2*n+1)))*(fac(fac(2*m+1)))/(fac(fac(2*(n+m)+1)));
Идея понятна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.11.2013, 21:32   #3
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Шушуть пофлужу..
Чтобы получить результат при больших n m..
Надо, 1) использовать Int64 2) Вычислить 1-ый множитель, убрать его с помощью делителя, вычислить 2-ой множитель, уменьшить его с помощью оставшейся части делителя..
Poma][a вне форума Ответить с цитированием
Старый 20.11.2013, 22:01   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Чтобы получить результат при больших n m..
Надо эти числа задавать маленькими
и не волать гуся, препод не на это будет смотреть
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.11.2013, 23:16   #5
dimka123
Пользователь
 
Регистрация: 25.12.2011
Сообщений: 96
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
function fac(i:integer):Integer;
var r:integer;
begin
 r:=1; while i>1 do begin r:=r*i; dec(i); end; fac:=r;
end;
И
Код:
...:=(fac(fac(2*n+1)))*(fac(fac(2*m+1)))/(fac(fac(2*(n+m)+1)));
Идея понятна?
да понятна! но - dec(i)-это что?
dimka123 вне форума Ответить с цитированием
Старый 20.11.2013, 23:18   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

dec(i) это i:=i-1.
Подробности читай в хелпе.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.11.2013, 00:40   #7
dimka123
Пользователь
 
Регистрация: 25.12.2011
Сообщений: 96
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
dec(i) это i:=i-1.
Подробности читай в хелпе.
Подскажи плиз, вот делаю уже в программе ввод значений n и м
то >1 выдает nan ....если 1 1 то бесконечность
на выводе значение Y
dimka123 вне форума Ответить с цитированием
Старый 21.11.2013, 00:49   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Нда... Числа получаются слишком большие. Процессор просто не в состоянии обработать их.
Ну тут уж прости, я не виноват.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.11.2013, 00:55   #9
dimka123
Пользователь
 
Регистрация: 25.12.2011
Сообщений: 96
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Нда... Числа получаются слишком большие. Процессор просто не в состоянии обработать их.
Ну тут уж прости, я не виноват.
жесткая программка блин) лад спасиб и на этом еще раз!
dimka123 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рекурсивные алгоритмы bodya00728 Помощь студентам 2 29.02.2012 01:12
Рекурсия. Рекурсивные подпрограммы maks133 Паскаль, Turbo Pascal, PascalABC.NET 2 14.02.2011 01:23
Подпрограммы-процедуры, подпрограммы-функции в Pascal rishikesh Помощь студентам 19 18.05.2010 23:05
Рекурсивные функции. Geg[C/c++] Общие вопросы C/C++ 2 11.10.2009 11:28