Целта на упражнението е да се демонстрират разлики между "чисти" рекурсивни функции и техни "акумулаторни" варианти. Като начало може да се започне с два варианта на функцията факториел, като се отбележат разликите в оценката на двете функции - с отлгане и без отлагане на умножението.

Задача. Да се дефинира функция за намиране на n-тия елемент на редицата на Фибоначи f0=1, f1=1, fk+2=fk+1+fk. Функацията да се дефинира "чисто" рекурсивно и с акумулатор. Каква е разликата в намирането на отговора при двата варианта?

Следващите функции е хубаво да се опита да се дефинират и в двата варианта, дори и за тези, при които акумулаторният вариант не допринася съществено.

Задача. Да се дефинира функция, намираща броя на цифрите на естествено число.

Задача. Да се дефинира функция myReverse x за обръщане на цифрите на естесвено число отзад-напред.
Mожем да разсъждаваме за естествените числа като за "списъци от цифри", като позволените операции върху тази структура от данни са 1)премахване на най-дясната цифра (div), 2)вземане на най-дясната цифра (mod) и добавяне на цифра в ляво на число (умножавайки цифрата по 10 на степен броя на цифрите на числото).

Да се дефинира и акумулаторен вариант на функцията myReverse.


Задача. Да се дефинира функция, премахваща k-тата цифра на ествествено число (броена от дясно на ляво).
Последно модифициране: събота, 12 ноември 2011, 17:38