Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите. Рекурсия и нет ее...
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Catherinektz
Дан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.
Федосеев Павел
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;
Catherinektz
Цитата(Федосеев Павел @ 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;



Спасибо Вам большое!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.