进制转化之递归 && 栈

Posted 悄然拔尖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进制转化之递归 && 栈相关的知识,希望对你有一定的参考价值。

将10进制转换成2进制,是除以2得到的余数,再倒序排列,这可以用递归实现,也可以用数据结构——栈实现。

先看递归实现:

 1 #include<stdio.h>  
 2 void to_two(int num);
 3 int main()
 4 {
 5     int a = 10;
 6     to_two(a);
 7     
 8     return 0;
 9 }
10 /*递归实现把一个数转成16/8/2进制*/
11 //转16/8/2进制分别求余16/8/2,再除以16/8/2
12 //10 转 2进制
13 void to_two(int num)
14 {
15     if (num!=0)
16     {
17         int remainder = num % 2;
18         to_two(num/2);
19         printf("%d", remainder);//这个输出函数的位置如果和上一句对调位置,将顺序输出
20     }
21     else
22     {
23 
24     }
25 }

递归的实现方式,需要一定的逻辑性,如果把上述的打印函数和递归调用调换位置,输出将反向。这里对于递归的基础知识不做解释,如果忘记了,查询相关资料。

这里用递归能够很好的实现把最后求出的数先打印出来,对于这种先进后出,后进先出的模型,很自然会想到栈的实现。

那么,下面用数组实现一个栈,完成这个转换:

以上是关于进制转化之递归 && 栈的主要内容,如果未能解决你的问题,请参考以下文章

数据结构&算法08-栈概念&源码

进制转化

递归&时间模块&os模块

qt怎样将字符串转化为16进制

CSP核心代码片段记录

大厂算法面试之leetcode精讲6.深度优先&广度优先