Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите решить задачку из нулевого варианта ЦТ!
Форум программистов > Системное программирование > Delphi и Pascal > Delphi - FAQ
АБИТУРИЕНТ-КА
10 апреля у меня ЦТ. Купила нулевой вариант, а там ТАКОЕ!!! Мы на информатике вообще такого не проходили. Благодаря научной литературе 20 из 30 заданий я решать научилась. Остальные никак не могу въехать. Подскажите КАК решать задачку:

function F(X:string):string;
var
L:=Length(X);
if L>1 then
begin
T:=Copy(X,2,L-1);
case X[1] of
'0': F:=T;
'1': F:=F(T)+'0'+F(T);
else F:=F(X)
end
end
else
F:=F(X)
end

Найти строку X, для которой F(X)=2X.
Poseidon
Хм, интересно. Почему 3 end и только 1 begin?
Далее...
Не обьявлено не одной переменной, хоть испольщзуется 3 и еще массив
Нет Result , т.е. функция ничего не возвращает.

В общем, нерабочая функция smile.gif
mikola1
Цитата(Poseidon @ 11:05:2006, 20:50 ) *
Хм, интересно. Почему 3 end и только 1 begin?

function -> end
then begin -> end
case of -> end

Цитата(Poseidon @ 11:05:2006, 20:50 ) *
Нет Result , т.е. функция ничего не возвращает.

А что без Result функция не может вернуть значения так F := T;

Двойка Poseidon за знание Delphi/Pascal

Result был введен в Delphi

А задачка прикольная с рекурсией, даже не знаю как решать. Только кажется рекурсия будет бесконечной, в предпоследней строчке наверное должно быть F := X; вместо F := F(X);



Цитата(АБИТУРИЕНТ-КА @ 4:04:2006, 17:17 ) *
Подскажите КАК решать задачку:


Есть идея. Одно правило гласит, любую рекурсию можно представить в конечного набора циклов. См. пример с факториалом. Можно преобразовать исходную функцию и привести к набору циклов. А там что нибудь будет видно.

Говорите из ЦТ задачка, хм.. мозги уже мои усохли..

Уж больно некрасиво решать такую задачу тупым перебором..
_#_Yur@_#_
наверно надо решать сконца
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.