递归算法

递归算法是一种直接或间接调用自身的算法。一般通过函数或者子过程来完成,在函数或子过程的内部,编写代码直接或者间接的调用自己,即可完成递归操作。

例一:求阶乘

#include <stdio.h>
int main(void){
    int i;
    printf("您要求出哪个数的阶乘?");
    scanf("%d",&i);
    printf("%d的阶乘结果为:%d\n",i,fact(i));
    getch();
    return 0;
}
int fact(int n){
    if(n<=1){
        return 1;
    }
    else{
        return n*fact(n-1);
    }
}

 例二:十进制转化为其他数制,除n取余法

#include <stdio.h>
#include <string.h>
//n是要转换的数字,b是要转化成的进制数 
void convto(char *s,int n, int b){
    char bit[] = {"0123456789ABCDEF"};
    int len;
    if(n==0){
        strcpy(s,"");
        return;
    }
    convto(s,n/b,b);
    len = strlen(s);//这里的len在不断的变化, 
    s[len] = bit[n%b];
    s[len+1] = '\0';
}
int main(void){
    char s[80];
    int i,base,old;
    printf("请输入十进制数");
    scanf("%d",&old);
    printf("请输入转换的进制:");
    scanf("%d",&base);
    convto(s,old,base);
    printf("%s\n",s);
    getch();
    return 0;
}
原文地址:https://www.cnblogs.com/zhaojianbin/p/5955462.html