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

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

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

 
 Ответить  Открыть новую тему 
> Рекрусивные функции, помогите пожалуйста
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Мужской
Реальное имя: Че? зачем

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


исправте мой неправельный текст на более правильный :

Код
Program Rfunction;
var
x:real;
n: integer;
function step (x: real;n: integer):real;
begin if n=1 then step:=x
else step:= step( x, n-1)*x;
end;
function podchet(x:real; n: integer):real;
Var x1: real;
begin if n=1 then podchet:= 2*x
else x1:= step (x,n);
podchet:= podchet(x, n-1)*(2*x1)/n;
end;
BEGIN
WRITE ('VVOD X N ');
readln( x, n);
y:=podchet(x, n-1);
writeln;( ' p= ', p);
readln;
end.


А вот текст проги Рекурсивные процедуры и функции


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Мужской
Реальное имя: Че? зачем

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


Ай нид хелп...
плиз...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

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


Цитата(UpRe_ID @ 23.05.2007 10:44) *

Ай нид хелп...
плиз...

В чем неправильность твоей программы? Неверные результаты выдает?
Или препод так сказал?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Мужской
Реальное имя: Че? зачем

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


Она просто недописана.
Где-то я что-то забыл..
в синтаксе паскаля не силен.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

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


А условие задачи - подсчитать P?
Тогда просто в цикле считай
for i:=1 to n do
begin
y:=podchet(x, i-1);
P:=p+y
end;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Мужской
Реальное имя: Че? зачем

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


Условие подсчитать?

А то что дал, куда вставить ?
А то паскалю куда не пиши че та не нравиться...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

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


Тьфу ты, там произведение, а не сумма. rolleyes.gif
Program Rfunction;
var
p,x:real;
i,n: integer;

function step (x: real;n: integer):real;
begin if n=1 then step:=x
else step:= step( x, n-1)*x;
end;
function podchet(x:real; n: integer):real;
Var x1: real;
begin if n=1 then podchet:= 2*x
else x1:= step (x,n);
podchet:= podchet(x, n-1)*(2*x1)/n;
end;
BEGIN
WRITE ('VVOD X N ');
readln( x, n);
p:=1;
for i:=1 to n do
begin
y:=podchet(x, i-1);
p:=p*1;
end;
writeln;( ' p= ', p);
readln;
end.












 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Оззя, ты begin/end нигде не забыл wink.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

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


Цитата(volvo @ 23.05.2007 12:03) *

Оззя, ты begin/end нигде не забыл wink.gif

volvo

Да я и не смотрел толком программу товарисча rolleyes.gif
В своем огрызке кода вроде не забыл rolleyes.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






function podchet(x:real; n: integer):real;
Var x1: real;
begin if n=1 then podchet:= 2*x
else BEGIN x1:= step (x,n); { <--- здесь}
podchet:= podchet(x, n-1)*(2*x1)/n;
END; { <--- здесь }
end;


Без них ты получишь мусор однозначно (неинициализированная локальная переменная X1)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Мужской
Реальное имя: Че? зачем

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


Цитата(volvo @ 23.05.2007 12:43) *

function podchet(x:real; n: integer):real;
Var x1: real;
begin if n=1 then podchet:= 2*x
else BEGIN x1:= step (x,n); { <--- здесь}
podchet:= podchet(x, n-1)*(2*x1)/n;
END; { <--- здесь }
end;


Без них ты получишь мусор однозначно (неинициализированная локальная переменная X1)



прога работает только после ввода данных она пишет " stack overflow error"

Сообщение отредактировано: UpRe_ID -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






Основная программа немного неверная... Вот так вызывать:

BEGIN
WRITE ('VVOD X N '); readln( x, n);
p:=1;

for i:=1 to n do begin
y:=podchet(x, i); { <--- Не (i - 1) !!!}
p:=p*y; { <--- Умножать надо на Y }
end;

writeln( ' p= ', p);
readln;
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Мужской
Реальное имя: Че? зачем

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


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

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

 





- Текстовая версия 29.03.2024 19:10
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name