Форум «Всё о Паскале» _ Задачи _ Биномиальные коэффициенты
Автор: 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 ...
пробывал их определить через вар так в итоге получается что вводишь их значение и на этом выполнение программы заканчивается а С не выводится...