java实现十进制想任意进制转化

一. 题目要求

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

二. 算法设计思路及递归模型

递归出口:num=0 //此处num指递归后(num/base)=0,即商为0时递归结束。

在这里插入图片描述

三. 代码实现

递归实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package scale;

import java.util.Scanner;

public class recursion {
public static String scale_Tobe(int base,int num){
String str="";
String wait="0123456789abcdef";
if(num==0){
// System.out.println(str);
return " ";
}
else{
str = scale_Tobe(base,num/base);
// String temp= String.valueOf(wait.charAt(num%base));
// System.out.println(str+temp);

return str+wait.charAt(num%base);//缀加
}

}

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入您想转化的十进制数:");
int input_10= sc.nextInt();
System.out.println("请输入您想转化的进制(2-16之间哦)");
int input_base= sc.nextInt();
System.out.println("转化为"+input_base+"进制结果为:");

System.out.println(scale_Tobe(input_base,input_10));
}

}

非递归实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package scale;

import java.util.Scanner;

public class nonerecursion {
public static String conversion(int num ,int base) {//base 进制 num 欲转换数据
String str = "";
int remainder;//余数
int consult = num;//商
while (consult > 0) {
remainder = num % base;
consult = consult / base;

//处理10-15之间a-f
if (remainder > 9) {
str = (char) ('a' + (remainder - 10)) + str;

} else {
str = remainder + str;
}

}
return str;

}




public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
System.out.println("请输入您要转化的十进制数");
int input_num = sc.nextInt();
System.out.println("请输入您想转化成进制");
int input_base = sc.nextInt();
System.out.println(conversion(input_num,input_base));


}
}
}

四.运行截图

在这里插入图片描述

递归调用过程

(求3—>2进制=11)
在这里插入图片描述

打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  • © 2019-2020 卻水
  • PV: UV:

请我喝杯咖啡吧~

支付宝
微信