一. 题目要求
题目:将非负十进制整数n转换成b进制。(其中b=2~16)
二. 算法设计思路及递归模型
递归出口:num=0 //此处num指递归后(num/base)=0,即商为0时递归结束。
三. 代码实现
递归实现
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));
}
}
非递归实现
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)