进制转化之递归 && 栈
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 }
递归的实现方式,需要一定的逻辑性,如果把上述的打印函数和递归调用调换位置,输出将反向。这里对于递归的基础知识不做解释,如果忘记了,查询相关资料。
这里用递归能够很好的实现把最后求出的数先打印出来,对于这种先进后出,后进先出的模型,很自然会想到栈的实现。
那么,下面用数组实现一个栈,完成这个转换:
以上是关于进制转化之递归 && 栈的主要内容,如果未能解决你的问题,请参考以下文章