#include <stdio.h>
/*tail recursive*/
int fact_iter(int product, int count, int max_count)
{
if (count > max_count)
return product;
fact_iter(product * count, count + 1, max_count);
}
int factorial(int n)
{
fact_iter(1, 1, n);
}
int main()
{
printf("factorial(5) = %d\n", factorial(5));
return 0;
}
/*
fact_iter(1, 1, 4)
fact_iter(1, 2, 4)
fact_iter(2, 3, 4)
fact_iter(6, 4, 4)
fact_iter(24,5, 4)
*/
/*Reference: <<Structure and Interpretation of Computer Programs>>*/
尾递归实现阶乘C语言实现,复杂度为O(n)
最新推荐文章于 2021-07-01 18:55:21 发布