将非负十进制整数n转换成b进制。(其中b=2~16)
一、题目名称:将非负十进制整数n转换成b进制。(其中b=2~16)
二、算法设计:
1.使用递归方法:递归出口:当输入的十进制整数为0时,退出函数,当输入的十进制数不为0时,进行将十进制数转化为任意进制的数的操作
函数出口:当输入的十进制数为0时
函数体:change(num,n)=change(num/n,n)
2.非递归方法:当输入的十进制数大于0时,进行求余运算,判断转化的进制是否大于9,若转换的进制大于9,则需进行运算,将数字转换为A~F,最后输出的时候需将数字转换为字符,并倒叙输出。
三、递归树
四、截图
①调试截图
②运行结果
五、总结
将十进制整数转化为任意进制的数,是通过两种方法来实现的,第一种为递归,使用该方法解决问题,首先需要找到递归的出口,然后需要将函数体写出来,这使编程逻辑性较强,并且会变得相对简单一点。非递归主要是将递归转化。
遇到的问题:该程序中需要注意的是,将十进制整数转化为大于10进制的数需要转化为ACSII,例如,十进制的11转化为16进制为B,在这个过程中不知道该怎么转化,因此,上网查了一下,可以利用公式(num%n-10)+'A',num%n是十进制整数对需转化的进制进行求余运算。在非递归程序的编写过程中遇到的问题是输出的结果为倒叙,改了好多遍,最后使用字符串的逆序输出,将正确的答案输出。