IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Помогите. Рекурсия и нет ее...
Catherinektz
сообщение 22.01.2013 8:17
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 40
Пол: Женский
Реальное имя: Екатерина

Репутация: -  1  +


Данa функция, аргументы которой - неотрицательные целые числа M и N
1, при М=0
f(M,N)=f(M-1,N-1)+f(M,N-1), при 0 < М < N
1, при M=N
Составить алгоритм, вычисляющий значение функции без помощи рекурсии и с помощью рекурсии.

Вот мои наработки. Должно быть две программки. Помогите хотя бы с одной, где с помощью рекурсии.

program N762;
Uses crt;

var X,Y,Rez:Integer;
function F(M,N:Integer):Integer;
var f:Integer;

Begin
//f1:=f(M-1,N-1);
//f2:=f(M,N-1);
//fun:=f1+f2;
{fun:=f(M-1,N-1)+f(M,N-1); }
//for i:= n downto 1 do
//for j:= m-1 downto 1 do
if M=0 then f:=1;
if (M>0) and (M<N)then f:=F(M-1,N-1)+F(M,N-1)
else if M=N then f:=1;
F:=f;
End;

Begin
WriteLn('Введите значения аргументов, неотрицательные числа');
ReadLn(X,Y);
Rez:=F(X,Y);
WriteLn('Rez=',Rez);
End.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Федосеев Павел
сообщение 23.01.2013 16:28
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 298
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  8  +


Catherinektz, вроде бы вариант с рекурсией ты верно реализовала, только Pascal=Delphi безразличен к регистру имён переменных - имя функции и пременной f не должны совпадать.
function F(M, N: integer): integer;
begin
{fun:=f(M-1,N-1)+f(M,N-1); }
if M = 0 then
F := 1;
if (M > 0) and (M < N) then
F := F(M - 1, N - 1) + F(M, N - 1)
else
if M = N then
F := 1;
end;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Catherinektz
сообщение 23.01.2013 17:06
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 40
Пол: Женский
Реальное имя: Екатерина

Репутация: -  1  +


Цитата(Федосеев Павел @ 23.01.2013 16:28) *

Catherinektz, вроде бы вариант с рекурсией ты верно реализовала, только Pascal=Delphi безразличен к регистру имён переменных - имя функции и пременной f не должны совпадать.
function F(M, N: integer): integer;
begin
{fun:=f(M-1,N-1)+f(M,N-1); }
if M = 0 then
F := 1;
if (M > 0) and (M < N) then
F := F(M - 1, N - 1) + F(M, N - 1)
else
if M = N then
F := 1;
end;



Спасибо Вам большое!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.06.2025 13:51
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"