我正在学习 C,所以我正在用 C 写一些小练习来练习这门语言。
我有函数式代码的经验,所以我喜欢递归。我认为使用 C 静态变量实现尾递归会很棒,因此不需要额外的参数或辅助函数。
此代码使用递归计算阶乘失败:
long long int fact(int n)
{
static long long int result = -1;
if(n <= 0) {
if(result < 0)
return 1;
else {
long long int temp = result;
result = -1;
return temp;
}
} else {
result *= n;
fact(n - 1);
}
}
但是,由于某种原因,我不能在 C 中执行此操作。是否有相同的成语?它只是我的编译器吗?记忆化呢?
非常感谢。