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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2008, 10:25   #11
como
Форумчанин
 
Регистрация: 26.07.2008
Сообщений: 116
По умолчанию

Цитата:
Сообщение от Nush@ Посмотреть сообщение
и что нужно сделать?((
посмотреть черной кошке в синие глаза
como вне форума Ответить с цитированием
Старый 03.12.2008, 19:36   #12
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию

Цитата:
Сообщение от Nush@ Посмотреть сообщение
Оу, простите, уважаемые, за мою неоседомленность=) ВОт код программы. Будьте добры, скажите,где ошибка?

program Funktcia;
uses crt;
var n,r:integer;

function F(n,r:integer):real;
begin
F:=F(n,r-1)+F(n-1,r);
if (r=1) then F:=n;
if (r=n) and (n=1) then F:=1;
end;

begin
if (0<=r) and (r<n) and (n<=10) then F(n,r);
end.
Давайте сначала Рекурсия это - функц. которая вызывает сама себя? - правильно. бесконечная рекурсия - Это функц. которая вызивает сама себя бесконечное количество раз.Теперь давайте посмотрим что вы НАВОЯЛИ : (Вдумываться что и как я не буду, просто анализ )
if (0<=r) and (r<n) and (n<=10) then F(n,r); - тут при каких то условиях вы вызываете функцию F.Переходим в функцию :
F:=F(n,r-1)+F(n-1,r); - и на 1 -ой же строчке !!! тут вы без никаких условий снова ее вызываете !!!! Другими словами ОНА ВСЕ ВРЕМЯ САМА СЕБЯ ВЫЗЫВАЕТ БЕЗ НИКАКИХ УСЛОВИЙ !!!!
Вам надо поставить какое то условие на вызов функции к примеру как вначале ( ведь там тока при каких, а не всех, значениях переменных вызываться функция)
Skype : UASm1Le.
Sm1Le вне форума Ответить с цитированием
Старый 03.12.2008, 21:16   #13
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

пост#6. Готовое решение. не пойму, чем не понравилось.
Нужно только добавить описание и ввод данных, вызов функции и вывод результатов..
например, так:

Код:
var
  n,r : LongInt;

function f(n,r:longint):longint;
begin
  if r=1 then f:=n else 
  if n=1 then f:=1 else
  f:=f(n,r-1)+f(n-1,r);
end;

begin
  WriteLn('Vvedite n (chislo elementov)  r (po skolko brat`)');
  ReadLn(n,r);
  if (0<=r) and (r<n) and (n<=10) then WriteLn(F(n,r));
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.12.2008, 21:27   #14
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Только, если верить этому - http://server.179.ru/tasks/cpp/functions.html
и этому - Биномиальный коэффициент
то:
Для биномиальных коэффициентов (числа сочетаний из n по k) хорошо известна рекуррентная формула: C(n,k)=C(n-1,k-1)+C(n-1,k). Вычислите значение C(n,k) пользуясь этой формулой и учитывая, что C(n,0)=C(n,n)=1.

тогда функция f() должна быть такой:
Код:
function f(n,r:longint):longint;
begin
  if r=0 then f:=1 else
  if n=r then f:=1 else
  f:=f(n-1,r-1)+f(n-1,r);
end;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
выход из рекурсии L_M Помощь студентам 9 03.10.2008 18:03
Рекурсии Logan Паскаль, Turbo Pascal, PascalABC.NET 1 13.05.2008 08:52
Паскаль рекурсии СРОЧНО Solana Помощь студентам 3 14.12.2007 17:49
Рекурсии при составлении программ Дуня Помощь студентам 3 06.12.2006 20:35