Я читал этот пост о хвостовой рекурсии.
Я скопирую опубликованное решение:
unsigned int f( unsigned int a ) {
if ( a == 0 ) {
return a;
}
return f( a - 1 ); // tail recursion
}
Мне было интересно, а что, если результат зависит от нескольких рекурсивных вызовов функций? Например:
unsigned int f( unsigned int a ) {
if ( a == 0 ) {
return a;
}
return f(a -1) + f( a - 1 );
}
Может ли компилятор оптимизировать приведенный выше код?