Пожалуйста, скажите мне, где я ошибаюсь, я не мог исправить свою ошибку в 2 программах. Я пытаюсь использовать рекурсивный в pascal.Я не знаю, почему программа не запускалась
Это один работает, но это дает мне неправильные resuts
program fatorial;
var
n: integer;
function f(n: longint): longint;
begin
if((n=0) or (n=1)) then
f:=1
else
*f:= n*f(n-1);*
read(f);
end;
begin
write('n:='); read(n);
f(n);
write('result:', f(n));
readln;
end.
Это один сказал мне: «Ошибка: недопустимый выражение», но я не знаю, как это исправить
program Greatest_common_divisor;
var
gcd,p,q: integer;
r:=real;
begin
write('p:'); read(p);
write('q:'); read(q);
r:= p mod q;
if r <> o then
begin
p:=q;
q:=r
*gcv:= gcv(q,r);*
end;
write('Greatest common divisor:', gcv(p.q));
readln;
end.
Вашей первой программы дает правильные результаты, если избавиться от 'чтения (е)'. Почему это? И вам нужно удалить звездочки извне '* f: = n * f (n-1); *'. Я не уверен, почему у вас их есть. И почему у вас есть дополнительный 'f (n);' вызов по строке сам по себе? Это нецелесообразно. Результат не сохраняется. Для вашей второй функции, почему у вас есть звездочки вокруг 'gcv: = gcv (q, r)'? Где определяется 'gcv'? и 'gcv (p.q)' недействителен, так как у вас есть период, а не запятая. – lurker
Звездочки были, вероятно, акцентом (чтобы показать рекурсию) из вики или страницы форума, которые он скопировал :-) –
@MarcovandeVoort Я подумал, что звездочки должны были что-то выделить. Я привел несколько других вопросов, которые необходимо решить ОР. Я подумал о том, как они осознают свою часть того, что они выбрасывают в свой вопрос, поскольку источник также был бы желательной целью. :) – lurker