一个递归算法必须包括什么?

如题所述

一个递归算法必须包括终止条件和递归部分。

一般循环就是:

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))。

温馨提示:答案为网友推荐,仅供参考
相似回答