Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2008, 10:09   #1
vitekbest
Пользователь
 
Регистрация: 16.12.2007
Сообщений: 18
Стрелка Ошибка в программе на рекурсию

Здравствуйте, господа, программеры, прошу помочь с задачей. Она на рекурсию, я её написал, она работает, но есть проблема: в ней я задаю три условия, по которым она высчитывает значение х, но когда я её запускаю и подставляю значения, то она учитывает только первое условие, а оставшиеся два не учитывает. Вот код программы:
Код:
 program NUMBER51;
 var
    x:real;
    i,n:integer;
    rezultat:real;
 function pow(x:real; n:integer):real;
    begin
    if n=0 then pow:=1;
    if n<0 then pow:=1/(x*exp(abs(n*ln(x))));
    if n>0 then pow:=x*(x*exp(n-1));
   end;
   begin
 writeln('Vvedite');
 readln(x);
 readln(n);
 writeln('Znachenie funkcii=',pow(x,n));
 readln;
end.
Заранее Вам благодарен!

From Stilet: И мы тебе будем благодарны коли будеш свои посты оформлять найчитабельнейшим образом. Код в специальный тег заключай.

Последний раз редактировалось Stilet; 12.06.2008 в 10:22.
vitekbest вне форума Ответить с цитированием
Старый 12.06.2008, 10:20   #2
[Smarik]
Веб-разработчик
Форумчанин
 
Аватар для [Smarik]
 
Регистрация: 16.01.2008
Сообщений: 451
По умолчанию

Код:
if n=0 then pow:=1 else
if n<0 then pow:=1/(x*exp(abs(n*ln(x)))) else
if n>0 then pow:=x*(x*exp(n-1));
так попробуй.
Я ваш новый друг, смиритесь!
[Smarik] вне форума Ответить с цитированием
Старый 12.06.2008, 10:27   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
когда я её запускаю и подставляю значения, то она учитывает только первое условие
А какие ты значения подставляешь что она неверно считает? Я проверил- вроде все верно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.06.2008, 10:40   #4
vitekbest
Пользователь
 
Регистрация: 16.12.2007
Сообщений: 18
По умолчанию

Ну элементарно пишу 2 во второй она выдаёт 1.087...+01, пишу 2 в -2
она выдаёт 1.25..-01. А она не должна минус учитывать, так как там по модулю. И вообще неправильные значения выдаёт
vitekbest вне форума Ответить с цитированием
Старый 12.06.2008, 10:46   #5
[Smarik]
Веб-разработчик
Форумчанин
 
Аватар для [Smarik]
 
Регистрация: 16.01.2008
Сообщений: 451
По умолчанию

почему там не должен минус учитывать? при вводе 2-ки идет 3-е условие, абсолютные числа я вижу только во 2-м условии....наверное я что то не так понимаю.
Я ваш новый друг, смиритесь!
[Smarik] вне форума Ответить с цитированием
Старый 12.06.2008, 10:52   #6
vitekbest
Пользователь
 
Регистрация: 16.12.2007
Сообщений: 18
По умолчанию

Там условие: х в степени n равен:
при n=0 x=1;
при n<0 х=1/x в степени модуль n (т. к. модуль, то он не должен учитывать минус);
при n>0 x=x*x в степени n-1.
vitekbest вне форума Ответить с цитированием
Старый 12.06.2008, 11:03   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
vitekbest
Ты можеш написать формулы которые хочеш вычислять, здается мне ты в формулах ошибся...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.06.2008, 11:08   #8
vitekbest
Пользователь
 
Регистрация: 16.12.2007
Сообщений: 18
По умолчанию

Я их написал уже
vitekbest вне форума Ответить с цитированием
Старый 12.06.2008, 11:20   #9
still_alive
Great Code Monkey
Форумчанин
 
Аватар для still_alive
 
Регистрация: 09.08.2007
Сообщений: 533
По умолчанию

if n<0 then pow:=exp(-abs(n)*ln(x));

Цитата:
при n>0 x=x*x в степени n-1.
В смысле (х*х)^(n-1)? Тогда это просто х^(2n-2).

Кстати, задача на рекурсию, а рекурсии тут я и не вижу %)
still_alive вне форума Ответить с цитированием
Старый 12.06.2008, 11:22   #10
vitekbest
Пользователь
 
Регистрация: 16.12.2007
Сообщений: 18
По умолчанию

Я знаю, что её здесь нет, эт препод так дала! спасибо, щас попробую
vitekbest вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите, где в программе ошибка gamer123 Паскаль, Turbo Pascal, PascalABC.NET 3 25.02.2008 03:09
Ошибка в программе. Массивы RECREATOR Общие вопросы Delphi 5 21.12.2007 12:13
Помогите, ошибка в программе. делфи Absent Помощь студентам 5 18.12.2007 17:36
Бинарный поиск в 1мерном массиве, ошибка в программе из книги ILDAR@GIZmo Помощь студентам 4 02.12.2007 22:22
Ошибка в программе RoadTrain Общие вопросы Delphi 5 24.10.2007 22:16