递归算法是一种直接或间接调用自身的算法。一般通过函数或者子过程来完成,在函数或子过程的内部,编写代码直接或者间接的调用自己,即可完成递归操作。
例一:求阶乘
#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; }