递归:递归的原理,就是本身调用本身自己。存在一个顺序的问题,若是在递归前的是顺序执行,递归后的是逆序执行,以下: ide
void gogogo() { //递归以前 gogogo(); //递归以后 }
下面实现进制转换就是利用的这个原理。spa
代码以下:code
#include<stdio.h> #include<stdlib.h> void toletter(int num) { switch (num) { case 10: printf("%c", 'a'); break; case 11: printf("%c", 'b'); break; case 12: printf("%c", 'c'); break; case 13: printf("%c", 'd'); break; case 14: printf("%c", 'e'); break; case 15: printf("%c", 'f'); break; default: printf("%d", num); break; } } //十进制转二进制 void convertto2(int num) { if (num ==1|| num==0) { printf("%d",num); } else { int n=num / 2; convertto2(n); printf("%d",num %2);//若是把这句话放在convertto2(n);以前就是顺序执行,显示是逆序,因此实现了余数的倒序排列。 } } //十进制转八进制 void convertto8(int num) { if (num < 8) { printf("%d", num); } else { int n = num / 8; convertto8(n); printf("%d", num % 8); } } //十进制转十六进制 void convertto16(int num) { if (num<16) { toletter(num); } else { int n = num / 16; convertto16(n ); toletter(num % 16); } } void main() { int num; printf("请输入一个整数"); scanf_s("%d",&num); printf("\n十进制转二进制:"); convertto2(num); printf("\n十进制转八进制:"); convertto8(num); printf("\n十进制转十六进制:"); convertto16(num); system("pause"); }
递归图解blog