Тогда простенький интерпретатор напиши. Ты ему арифметическое выражение, а он тебе результат. Тут и в парсере, если руками писать, есть где применить рекурсию на практике, и в вычислителе.
Тебе сложных или так? Съешь с stdin'а в дерево индентированные строки по типу питоновского лаяута, посчитай для каждого уровня сумму длин строк, отобранных по динамическому критерию. Нарисуй в двумерном массиве произвольную замкнутую кривую, закрась область в рандомной точке. Вот здесь еще интересные задачи есть.
Написать сложение, вычитание, умножение, деление, возведение в степень. Построить через натуральные целые числа, написать арифметику для них. Из них сделать рациональные, тоже с арифметическими операциями.
Реализовать List с основными функциями вроде map, zip, foldl/foldr, filter
Это если рекурсия хвостовая, но компилятор ее не умеет оптимизировать. Иначе все равно придется эмулировать рекурсивный вызов сохранением какого-то состояния.
Это новшество ввели для анонимных функций (пока в альфе - выход ожидается в марте). Можно ссылаться внутри анонимной функции на саму себя без извратов.
1> F = fun Fact(0) -> 1;
Fact(N) -> N * Fact(N - 1)
end. §
#Fun
2> F(10).
3628800
Это семейство называется «ML programming language family», Миранда появилась через десять лет, а Окамль и вовсе через двадцать после появления оригинального ML'я.
Как же это смешно - жава и «эффективность» в одном предложении. Рекурсия по определению, в текущих реалиях, никак не может быть «эффективной», а все твои выхлопы недоязычков - это только особенности и проблемы твоих недоязычков, но никак не «эффективность» рекурсии.
Зачем ты проецируешь свою надопортянку на надоязычке на реальный мир? Ну заменил ты реальный мир своим жава-мирком - молодец, только когда балаболишь не забывай упоминать, что - «это работает только в моём жабамирке».
Крута, ещё лет 50-60 инноваций и дагонит однострочник на сишке. А ещё лет через 100-150 оно перестанет тормазить и будет способно на что-то чуть большее, чем обычная пускалка уровня xargs для всяких неосиляторов. А ещё лет через 200 его недосинтаксис догонит компактность сишки.
компилятор чего-нибудь в s-выражения, конвертер json в что-нибудь. если говорить про олимпиадные, то поищи нетривиальных задач на рекурсию(например на графы, где как-то используется dfs) где-нибудь на кодефорсес.