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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2012, 09:22   #1
--1990Артём
 
Регистрация: 01.10.2012
Сообщений: 5
По умолчанию Написать программу с рекурсивной функцией

Найдите сумму квадратов всех ЧЕТНЫХ чисел от 2 до заданного числа.
помимио нахождения основоного результата-необходимо организовать подсчет числа реально произведенных рекурсивных выводов.
Я написал,только без рекурсивной,немного не понимаю....
Код:
Program primer;
Var
  n,i,k,s:integer;
Begin
  Writeln('Введите n');
  Readln(n);
  
  s:=0;
  for i:=1 to n do
  Begin
    if i mod 2=0 then  {если чётное}
    Begin
      k:=i*i;
      s:=s+k;
    End;
  End;
  Writeln('сумма' ,s);
  Readln;
End.

Последний раз редактировалось ACE Valery; 26.11.2012 в 14:53.
--1990Артём вне форума Ответить с цитированием
Старый 26.11.2012, 09:26   #2
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
Function GetSum(n:integer):real;
begin
if N>0 then Getsum:=n*n+Getsum(n-2);
end;
var N:integer;
s:real;
begin
repeat
readln(n);
until n>2;
n:=n div 2 *2;
s:=Getsum(n);
writeln(s);
end.
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 26.11.2012, 10:01   #3
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Рекурсия - грубо говоря, это когда функция вызывает внутри саму себя. Ну, или как когда-то ляпнул наш преподаватель по лиспу:

"Я обернулся посмотреть, не обернулась ли она, чтоб посмотреть, не обернулся ли я - это тоже рекурсия!" (с)

В Вашей программе даже функций/процедур не наблюдается, так что о какой рекурсии может идти речь?

Код:
Program primer;

Var n,s:integer;

Function OddSum(x,y: integer): integer;
var sum: integer;
begin
  sum:=0;
  if x<=y then sum:=x*x+OddSum(x+2,y);
  OddSum:=Sum;
end;

Begin
  Writeln('Введите n: ');
  Readln(n);
  s:=OddSum(0,n);
  Writeln('Сумма: ' ,s);
  Readln;
End.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 26.11.2012, 11:56   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Mad_Cat, маленький совет на будущее, если пишите функцию, то пишите код так, чтобы она ВСЕГДА возвращала значение!
("нормальные" компиляторы следят за этим и вообще не позволят Вам скомпилировать код, подобный вашему, где значение функции может быть неопределённым!)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.11.2012, 12:22   #5
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
"нормальные" компиляторы следят за этим и вообще не позволят Вам скомпилировать код
Позволит. Но выдаст Hint. Что-то вроде: функция может не вернуть конечного значения.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 26.11.2012, 12:34   #6
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

offtop
1 ) программа работает?
2) значения возвращает?
3) ТС все устроило?
1 - Да (по крайней мере в Паскаль ABC - без хинтов и ероров)
2 - Да (верные )
3 - Видимо да раз он лихо смылся (Без реверансов и экивоков)
==> Решение найдено и пора крыть тему
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 26.11.2012, 12:54   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Sciv
Цитата:
нормальные" компиляторы следят за этим и вообще не позволят Вам скомпилировать код
Позволит. Но выдаст Hint.
когда я говорил про нормальные компиляторы, я и имел в виду, что Delphi не обладает нормальным компилятором, и к этому пофигистично относится.
Точно так же Delphi позволит Вам использовать значение неиницилизированной переменной.
Например, в том же C# компилятор Вам не даст такие финты крутить (и это правильно!)

offtop.
Mad_Cat, что Вы на дыбки встаёте?!
я же написал, чтобы Вы для себя выводы сделали.
Не хотите - воля Ваша, хозяин - барин!




А тему я прикрывать пока не буду.
Может, TC соблаговолит отписаться...

Последний раз редактировалось Serge_Bliznykov; 26.11.2012 в 12:58.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.11.2012, 13:09   #8
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
когда я говорил про нормальные компиляторы, я и имел в виду, что Delphi не обладает нормальным компилятором, и к этому пофигистично относится.
Точно так же Delphi позволит Вам использовать значение неиницилизированной переменной.
Да, согласен. Все вытекающие из этого последствия - на совести разработчика.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализовать программу с подпрограммой-функцией PHARAoN91 Паскаль, Turbo Pascal, PascalABC.NET 0 23.11.2011 10:19
Написать схематично программу с функцией, возвращающей целое число и число с десятичной точкой(Экзам. вопрос). datileo Visual C++ 1 22.06.2011 09:49
Написать программу с рекурсивной функцией, вычисляющей: S по формуле. Figushkin Помощь студентам 8 04.06.2010 14:58
проблеммы с рекурсивной функцией. ciaonataha Общие вопросы C/C++ 2 21.07.2009 16:45
проблема с рекурсивной функцией world12_tk Помощь студентам 2 04.03.2009 20:57