阅读背景:

2018.10.31 递归算法总结

来源:互联网 
///十进制转二进制
void dectobin( int n )
{
    if(n==0) return;
    dectobin(n/2);
    printf("%d",n%2);
}



///递归求斐波那契数列
int fib(int n)
{
    if(n==1 || n==2) return 1;
    return fib(n-1)+fib(n-2);
}



///递归求斐波那契数列,打表法
int a[47];

int fib(int n)
{
    if(n==1 || n==2) return a[1]=a[2]=1;
    if(!a[n])
    {
        return a[n]=fib(n-1)+fib(n-2);
    }
    else
        return a[n];
}


//////尾递归求斐波那契数列,
///ret1是斐波那契数列的第一项,ret2为第二项
int fibTR(int n,int ret1,int ret2)
{
    if(n==1) return ret1;
    return fibTR(n-1,ret2,ret1+ret2);
}



///尾递归求n的阶乘
///a保存从后往前的乘积
int factTR(int n,int a)
{
    if(n==0 || n==1) return a;
    return factTR(n-1,n*a);
}
int main(int argc, char const *argv[])
{

	int n;
	while (scanf("%d", &n) != EOF) {
		printf("%d\n", factTR(n,1));
	}
	return 0;
}///十进制转二进制
void dectobin( int n )
{
    i



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: