一、题目说明
采用递归思想编程解决问题
题目1:将非负十进制整数n转换成b进制。(其中b=2~16)
二、算法分析
1、题一
进制转化采用短除法
图1 十进制转化成二进制
三、代码实现
1、题一
public class text {
public static void feidigui(int n,int k) {
char[] ch=new char[100];
int x=0;
int temp=n;
while(temp>=k) {
if(temp%k<10) ch[x]=(char) (temp%k+48);
else ch[x]=(char) (temp%k+55);
temp=temp/k;
x++;
}
if(temp<10) ch[x]=(char) (temp+48);
else ch[x]=(char) (temp+55);
System.out.print("非递归方法十进制数"+n+"转化成"+k+"进制:");
for(int i=x;i>=0;i--)
System.out.print(ch[i]);
}
public static void digui(int n,int k) {
if(n>=k) digui(n/k,k);
if(n%k<10) System.out.print(n%k);
else System.out.print((char) (n%k+55));
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int k=sc.nextInt();
feidigui(n,k);
System.out.println();
System.out.println("递归方法进制转化(10)->("+k+")"+"\r\n"+n+"->");
digui(n,k);
}
}
四、运行结果
五、经验总结
话不多说,要注重细节呀!!!
参考:图1来自
(https://baike.baidu.com/item/进制转换/3117222?fr=aladdin#6)