Помогите решить задачку из нулевого варианта ЦТ!

  • Автор темы -
  • Дата начала
Статус
Закрыто для дальнейших ответов.

Гость
#1
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.
 
P

Poseidon

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

В общем, нерабочая функция :)
 
M

mikola1

Гость
#3
Хм, интересно. Почему 3 end и только 1 begin?
function -> end
then begin -> end
case of -> end

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

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

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

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



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

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

Уж больно некрасиво решать такую задачу тупым перебором..
 
Статус
Закрыто для дальнейших ответов.