一个递归算法必须包括终止条件和递归部分。
一般循环就是:
int multi = 1;
if (x <=1) return (1);
for(int i=1;i<=x;i++)multi = multi*i;
return(multi);
递归把x!看作x*(x-1)!
int multi(int x){if(x==0||x==1) return 1;else return x*multi(x-1);}
尾部递归:
而不对其再加运算。尾部递归与循环是等价的,而且在一些语言(如Scheme中)可以被优化为循环指令。
在这些语言中尾部递归不会占用调用堆栈空间。以下Scheme程序同样计算一个数字的阶乘,但是使用尾部递归:(define (factorial n) (define (iter product counter) (if (> counter n) product (iter (* counter product) (+ counter 1)))) (iter 1 1))。