遞歸:遞歸的原理,就是本身調用本身自己。存在一個順序的問題,若是在遞歸前的是順序執行,遞歸後的是逆序執行,以下: 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