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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2010, 15:40   #1
bwitcher
Форумчанин
 
Регистрация: 09.06.2010
Сообщений: 112
По умолчанию Рекурсивная фунция в Паскале

Здравствуйте!
Напишите программу вычисления N-го члена последовательности, начинающейся с единицы, в которой каждый следующий член равен сумме квадратов всех предыдущих.
Может кто-нибудь помочь? Решать нужно с помощью рекурсивных функций. Заранее спасибо!
bwitcher вне форума Ответить с цитированием
Старый 13.12.2010, 15:59   #2
bwitcher
Форумчанин
 
Регистрация: 09.06.2010
Сообщений: 112
По умолчанию

Написать рекурсивную функцию для вычисления количества цифр натурального числа.
Вот еще одна. Кто чем сможет, буду очень благодарен...
bwitcher вне форума Ответить с цитированием
Старый 13.12.2010, 16:37   #3
Asker13
Форумчанин
 
Аватар для Asker13
 
Регистрация: 01.12.2010
Сообщений: 140
По умолчанию

1)
Код:
function RecSum(n: integer): integer;
begin
  if n > 1 then RecSum := Sqr(n) + Sqr(RecSum(n-1)) else RecSum := 1;
end;
2)
Код:
function RecNum(N: integer): integer;
begin
  if n <> 0 then RecNum := 1 + RecNum(N div 10);
end;
Пример использования:
Код:
var
  N: integer;

function RecNum(N: integer): integer;
begin
  if n <> 0 then RecNum := 1 + RecNum(N div 10);
end;


begin
  ReadLn(N);
  WriteLn(RecNum(N));
  ReadLn;
end.

Последний раз редактировалось Asker13; 13.12.2010 в 16:41.
Asker13 вне форума Ответить с цитированием
Старый 13.12.2010, 16:54   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Asker13, очень хорошо!

позволю чуток подправить код..
для функций (в том числе и для рекурсивных) ВСЕГДА надо предусматритривать возвращаемое значение.
поэтому лучше так:
Код:
function RecNum(N: integer): integer;
begin
  if n > 0 then RecNum := 1 + RecNum(N div 10)
  else RecNum := 0;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.12.2010, 16:59   #5
bwitcher
Форумчанин
 
Регистрация: 09.06.2010
Сообщений: 112
По умолчанию

Спасибо, ребята, вам огромное! Чуток позже буду смотреть

Не работают ни 1-ая, ни 2-ая. Кто-нибудь мог бы помочь? Напишите, пжл, первую полностью) А вторую нужно вообще исправлять...

Нет, все отлично, 2-ая работает. Прошу прощения, ребят. А вот с первой кто-нить подскажет?

Последний раз редактировалось Stilet; 13.12.2010 в 17:33.
bwitcher вне форума Ответить с цитированием
Старый 13.12.2010, 17:30   #6
Asker13
Форумчанин
 
Аватар для Asker13
 
Регистрация: 01.12.2010
Сообщений: 140
По умолчанию

Извините, немного ошибся.
Код:
function RecSum(n: integer): integer;
begin
  if n > 1 then RecSum := Sqr(n) + RecSum(n-1) else RecSum := 1;
end;
Asker13 вне форума Ответить с цитированием
Старый 13.12.2010, 17:35   #7
bwitcher
Форумчанин
 
Регистрация: 09.06.2010
Сообщений: 112
По умолчанию

А не могли бы вы полную программу написать? 1-ую)
bwitcher вне форума Ответить с цитированием
Старый 13.12.2010, 17:39   #8
Asker13
Форумчанин
 
Аватар для Asker13
 
Регистрация: 01.12.2010
Сообщений: 140
По умолчанию

Код:
program _1;
var
  N: integer;
function RecSum(n: integer): integer;
begin
  if n > 1 then RecSum := Sqr(n) + RecSum(n-1) else RecSum := 1;
end;

begin
  ReadLn(N);
  WriteLn(RecSum(N));
  ReadLn;
end.
Тут писать нечего.
Asker13 вне форума Ответить с цитированием
Старый 13.12.2010, 17:41   #9
bwitcher
Форумчанин
 
Регистрация: 09.06.2010
Сообщений: 112
По умолчанию

Да, я тоже так прописал. Я просто вот в чем не уверен: n точно нужно вводить с клавиатуры? Задание же вроде, что ее нужно вычислить???
bwitcher вне форума Ответить с цитированием
Старый 13.12.2010, 17:47   #10
Asker13
Форумчанин
 
Аватар для Asker13
 
Регистрация: 01.12.2010
Сообщений: 140
По умолчанию

Число N вы вводите с клавиатуры, но программа высчитывает-то сумму квадратов чисел от 1 до N. К примеру, вы ввели 4. Программа считает от 1 до 4: 4^2 + 3^2 + 2^2 + 1.
Asker13 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Виртуальные функции фунция срабатывает не правильно кто поможет найти ошибку Progsenya Общие вопросы C/C++ 1 24.08.2010 01:22
Рекурсивная функция Bernuar Помощь студентам 2 06.04.2010 10:07
Рекурсивная функция Trinity13 Помощь студентам 8 14.02.2010 18:44