将非负十进制整数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,最后输出的时候需将数字转换为字符,并倒叙输出。

三、递归树

将非负十进制整数n转换成b进制。(其中b=2~16)

四、截图

①调试截图

将非负十进制整数n转换成b进制。(其中b=2~16)

②运行结果

将非负十进制整数n转换成b进制。(其中b=2~16)

五、总结

将十进制整数转化为任意进制的数,是通过两种方法来实现的,第一种为递归,使用该方法解决问题,首先需要找到递归的出口,然后需要将函数体写出来,这使编程逻辑性较强,并且会变得相对简单一点。非递归主要是将递归转化。

遇到的问题:该程序中需要注意的是,将十进制整数转化为大于10进制的数需要转化为ACSII,例如,十进制的11转化为16进制为B,在这个过程中不知道该怎么转化,因此,上网查了一下,可以利用公式(num%n-10)+'A',num%n是十进制整数对需转化的进制进行求余运算。在非递归程序的编写过程中遇到的问题是输出的结果为倒叙,改了好多遍,最后使用字符串的逆序输出,将正确的答案输出。