>>955
その例は、手続き型でも大差ないだろう。

int f(int m, int n)
{
 return m <= n? m * f(m+1,n) : 1;
}