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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2011, 22:46   #1
К.Марат
Пользователь
 
Регистрация: 11.10.2011
Сообщений: 10
По умолчанию Задачи на рекурсию (Паскаль)

1) Вычислить рекурсивно функцию вида у=COS(X)+COS(X^2)+COS(X^3)+...+COS( X^N).
2) Найти сумму цифр заданного числа.
3) Вычислить X в степени Y путем многократного умножения (X, Y: INTEGER)
4) Разработайте программу вычисления an натуральной степени n вещественного числа a за наименьшее число операций.
К.Марат вне форума Ответить с цитированием
Старый 12.10.2011, 09:50   #2
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Цитата:
Вычислить рекурсивно функцию вида у=COS(X)+COS(X^2)+COS(X^3)+...+COS( X^N).
Код:
Function RecCosinus(X:Real;N:Byte):Real;
Begin
  If N = 1 then RecCosinus:=Cos(x)
  Else
  RecCosinus:=exp(n*Ln(x)) + RecCosinus(x, N - 1)
End;
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 12.10.2011, 12:01   #3
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,886
По умолчанию

Разомну от рабочего дня моск
2 )
Код:
Function RecDigitsSum(N:int64):word;
var tmp : Integer;
Begin
  If N < 10 then result := N
  Else begin
    tmp := trunc(Exp(ln(10)*trunc(ln(N)/ln(10))));
    Result := N div tmp  + RecDigitsSum(N mod tmp);
    end;
End;
3)
Код:
Function RecPower(n: integer; p : byte):int64;
Begin
  If p = 1 then result := N
  Else Result := N * RecPower(n,p-1);
End;
ТС - прогони примеры отладкой и поймёшь все принципы

Уважаемые топик_ридеры - не давайте больше ТС'у решений, а именно 4 задание, я уверен, понять принципы рекурсии теперь ему предостаточно примеров, пусть и сам подумает, не будем плодить лентяев

EDIT не помню что там в паскале с int64 , если нет, то можно просто поставить integer

Последний раз редактировалось phomm; 12.10.2011 в 12:11.
phomm вне форума Ответить с цитированием
Старый 12.10.2011, 23:56   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

2-я задача
Цитата:
Сообщение от phomm
Код:
tmp := trunc(Exp(ln(10)*trunc(ln(N)/ln(10))));
ОМГ. Зачем же так сложно то?!
проще надо быть, проще.. и люди к Вам потянутся...
Код:
Function RecDigitsSum(N:longint):word;
Begin
  If N < 10 then RecDigitsSum := N
  Else 
    RecDigitsSum := RecDigitsSum(N div 10) + (N mod 10);
End;


Цитата:
EDIT не помню что там в паскале с int64 , если нет, то можно просто поставить integer
если речь идёт о TurboPascal, то там, разумеется, никакого int64 нет! Можно использовать longint, а можно и просто integer (просто в TP диапазон integer: -32768..32767
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.10.2011, 06:48   #5
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,886
По умолчанию

Serge, мда, я что-то со стороны большего разряда к числу подступился.. надо было со стороны меньшего )) признаю, перемудрил
И да, уже после решения вспомнил про лонгинт

ТС, Вы поняли принципы рекурсии ? Отпишитесь, интересно же ))
phomm вне форума Ответить с цитированием
Старый 14.10.2011, 18:12   #6
К.Марат
Пользователь
 
Регистрация: 11.10.2011
Сообщений: 10
По умолчанию

Спасибо большое, теперь разобрался.
К.Марат вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Необходимо решение задачи на рекурсию Пират Помощь студентам 1 03.07.2011 06:27
Специфические задачи на рекурсию на C++ ($) DaryaArt Фриланс 2 27.04.2011 02:19
3 задачи [Паскаль] Raudi_s Помощь студентам 3 21.11.2009 13:23
Паскаль - задачи DikayaKiska Помощь студентам 1 17.06.2009 08:50