Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Биномиальные коэффициенты

Автор: shyrik 14.01.2005 1:39

Описать функцию С(m,n), где 0=< m =< n, для вычисления биномиального коэффициента по формуле: при 0< m< n


формула:


Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: volvo 14.01.2005 2:09

shyrik
Например, так:

Код
Function C(m, n: Byte): LongInt;

 Procedure pC(m, n: Byte; Var R: Longint);
   Var R1, R2 : Longint;
   Begin
     If (m=0) or (m=n) Then R:=1
     Else
       Begin pC(m, n-1, R1); pC(m-1, n-1, R2); R:=R1+R2 End;
   End;

 Var Res: LongInt;
 Begin
   pC(m, n, Res);
   C := Res
 End;

Var
 R: LongInt;

begin
 WriteLn('C(5, 7) = ', C(5, 7))
end.

Автор: _Smoke_ 10.04.2007 13:09


function Cmn(m,n:byte):longint;
Begin
If (m=0) or (m=n) Then Cmn:=1
Else Cmn:=Cmn(m,n-1)+Cmn(m-1,n-1)
End;



Вроде так проще.

Автор: volvo 10.04.2007 13:40

Если бы оно не вылетало при некоторых значениях с переполнением стека, я бы сделал это именно функцией... А поскольку вылетает, я обернул это дело в процедуру, и "разгрузил" стек...

Автор: BE@ST 18.11.2007 15:26

Цитата(volvo @ 13.01.2005 21:09) *
shyrik
Например, так:
Код
Function C(m, n: Byte): LongInt;

Procedure pC(m, n: Byte; Var R: Longint);
   Var R1, R2 : Longint;
   Begin
     If (m=0) or (m=n) Then R:=1
     Else
       Begin pC(m, n-1, R1); pC(m-1, n-1, R2); R:=R1+R2 End;
   End;

Var Res: LongInt;
Begin
   pC(m, n, Res);
   C := Res
End;

Var
R: LongInt;

begin
WriteLn('C(5, 7) = ', C(5, 7))
end.


помогите плиз изменить код чтобы данные были не заранее прописаны ,а надо было вводить с клавиатуры

я пробывал но видимо делал что то не так и мне писало неверная ссылка переменной (что то в этом духе)...

я только учусь...

Автор: BE@ST 18.11.2007 16:14

Код


program binom;
uses crt;
Function C(m, n: Byte): LongInt;

Procedure pC(m, n: Byte; Var R: Longint);
   Var R1, R2 : Longint;
   Begin
   clrscr;
     If (m=0) or (m=n) Then R:=1
     Else
       Begin pC(m, n-1, R1); pC(m-1, n-1, R2); R:=R1+R2 End;
   End;

Var Res: LongInt;
Begin
   pC(m, n, Res);
   C := Res
End;

Var
R: LongInt;

begin
WriteLn('C(5, 7) = ', C(5, 7));
readln;
end.



пробовал в readln пррописать m и n - пишет unknown identifier ...

пробывал их определить через вар так в итоге получается что вводишь их значение и на этом выполнение программы заканчивается а С не выводится...