尾递归(tail recursive)是指把结果保存在参数中,而不是每次都要重新计算子结果的值。相当于把中间过程保存了以提高计算效率
#include <stdio.h> int fac(int n){ if(n==0 || n==1) return 1; else return fac(n-1)*n; } //tail recursive //满足两点:1递归调用在函数最后执行;2它的返回值不属于表达式的一部分。 int fac2(int n, int a){ if(n==0 ||n==1) return a; else return fac2(n-1,n*a); } int main(){ printf("%d\t%d\n",fac(4),fac2(4,1)); return 0; }
浙公网安备 33010602011771号