码迷,mamicode.com
首页 > 其他好文 > 详细

进制转化之递归 && 栈

时间:2017-03-16 16:05:32      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:int   反向   逻辑性   相关   结构   解释   oid   知识   调用   

将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 }

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

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

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

进制转化之递归 && 栈

标签:int   反向   逻辑性   相关   结构   解释   oid   知识   调用   

原文地址:http://www.cnblogs.com/yangguang-it/p/6559893.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!