Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.12.2009, 15:01
Asira Asira вне форума
Новичок
 
Регистрация: 11.12.2009
Сообщения: 76
Репутация: -26
По умолчанию Рекурсивняа функция Делфи

Код:
function summa3(n:integer):integer;
var s,i,a:integer;
begin a:=1; s:=0; for i:=1 to n do
begin summa3:= summa3(n-1) +a*a;
a:=a+i;
end;end
;

Последний раз редактировалось Asira, 27.12.2009 в 18:22.
Ответить с цитированием
  #2  
Старый 15.12.2009, 15:27
Аватар для AleD
AleD AleD вне форума
Активный
 
Регистрация: 21.02.2009
Адрес: г.Краснокаменск
Сообщения: 383
Репутация: 91
По умолчанию

Цитата:
Сообщение от Asira
Помогите написать рекурсивную функцию без оператора for
Найти сумму: 1( в квадрате)+2(в квадрате)+4(в квадрате)+7(в квадрате)+11(в квадрате)… (n слагаемых)
Код:
function summa3(n:integer):integer;
var s,i,a:integer;
begin a:=1; s:=0; for i:=1 to n do
begin summa3:= summa3(n-1) +a*a;
a:=a+i;
end;end
;

Если вы имеете в виду написать вообще без циклов, то как мне кажется (могу ошибаться) это невозможно. Если это принцип против цикла for, можно использовать while, repeat, да даже лэйблы с переходами
__________________
TAleD = class(TUser)
public
function HelpMe(ASubject, ARequest: String): String;
function GiveMeExample(ASubject: String): TStringList;
procedure WriteReview(APost: Integer; ADescription: TStringList);
end;
Ответить с цитированием
  #3  
Старый 15.12.2009, 15:29
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Как это невозможно, а как же рекурсивный спуск)

Код:
function Summ(i:Integer):Integer;
begin
  Result:=0;
  if i > 0 then
    Result:=Result+(i*i)+Summ(i-1);
end;
Ответить с цитированием
  #4  
Старый 15.12.2009, 15:51
Asira Asira вне форума
Новичок
 
Регистрация: 11.12.2009
Сообщения: 76
Репутация: -26
По умолчанию

РЕЗУЛЬТАТ ПОЛУЧАЕТСЯ НЕПРАВИЛЬНЫЙ
Ответить с цитированием
  #5  
Старый 15.12.2009, 15:53
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Цитата:
Сообщение от Asira
РЕЗУЛЬТАТ ПОЛУЧАЕТСЯ НЕПРАВИЛЬНЫЙ

Что значит не правильный, по условию задания твоего, проверил, у меня получается правильный)
Ответить с цитированием
  #6  
Старый 15.12.2009, 16:03
Asira Asira вне форума
Новичок
 
Регистрация: 11.12.2009
Сообщения: 76
Репутация: -26
По умолчанию

я ВВЕЛА n=3 он вывел 14 а должен был 21 вывести...
Ответить с цитированием
  #7  
Старый 15.12.2009, 16:07
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Ок, моя функция считает последовательно 1*1 + 2*2 + 3*3 + 4*4
В твоем задании 1*1 + 2*2 + 4*4 + 7*7 ...

Немогу понять как у тебя определяется последовательность слагаемых чисел, нужна формула, у меня по порядку, а у тебя ?)

Дай формулу по которой определяется следующее слагаемое число и я перепишу функцию под твою задачу, лучше саму задачу дай, как она звучит изначально. что за числа 1, 2, 4, 7...?
Ответить с цитированием
  #8  
Старый 15.12.2009, 16:11
Asira Asira вне форума
Новичок
 
Регистрация: 11.12.2009
Сообщения: 76
Репутация: -26
По умолчанию

Код:
function summa2(n:integer):integer;
var s,i,a:integer;
begin
s:=0;
a:=1;
for i:=1 to n do
begin
s:=s+a*a;
a:=a+i;
end;
summa2:=s;
end;

Последний раз редактировалось Asira, 27.12.2009 в 18:22.
Ответить с цитированием
  #9  
Старый 15.12.2009, 16:49
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Что-то типа этого)
Код:
function summa(const StartSum, FirstNum, CountN:integer):integer;
begin
  Result:=0;
  if FirstNum-1 < CountN then
    Result:=Result+(StartSum*StartSum)+summa(StartSum+FirstNum, FirstNum+1, CountN);
end;
и сам вызов
Код:
  Summa(1,1,N)
Ответить с цитированием
  #10  
Старый 15.12.2009, 17:00
Asira Asira вне форума
Новичок
 
Регистрация: 11.12.2009
Сообщения: 76
Репутация: -26
По умолчанию

Спасибо !!!!!!!!!
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:27.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter