Недавно я пытался скомпилировать программу с помощью GCC:
int f(int i){
if(i<0){ return 0;}
return f(i-1);
f(100000);
и все прошло нормально. Когда я проверял кадры стека, компилятор оптимизировал программу, чтобы использовать только один кадр, просто вернувшись назад к началу функции и заменив аргументы на f. И - компилятор даже не работал в оптимизированном режиме.
Теперь, когда я пытаюсь сделать то же самое в Python - я достигаю максимальной стены рекурсии (или, возможно, переполнения стека, если я установил слишком большую глубину рекурсии).
Есть ли способ, которым динамический язык, такой как python, может воспользоваться этими приятными оптимизациями?
Может быть, можно использовать компилятор вместо интерпретатора, чтобы сделать эту работу?
Просто любопытно!