现在的位置: 首页 > 综合 > 正文

尾递归实现阶乘C语言实现,复杂度为O(n)

2013年08月30日 ⁄ 综合 ⁄ 共 402字 ⁄ 字号 评论关闭
#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>>*/

抱歉!评论已关闭.