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

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

二、问题分析与设计:
要将十进制整数n转换为b进制,将n作为被除数b为除数取余记为rema,商记为consult,每一次的取余所得值赋值给另一数组result,从下标为0到count,count为记录递归的次数同时为存放转换后所得值的位数,最后顺序输出数组result的值。

三、算法构造:
通过递归实现
递归出口即为商(consult=0)时结束,并输出;
递归函数:change(int consult,int scale,int count)

四、递归栈调用过程图:

将非负十进制整数n转换成b进制(其中b=2~16)_第1张图片

五、java实现

package Demo;

import java.util.Scanner;

public class Demo {
	public static void main(String[] args) {
		Scanner a =new Scanner(System.in);
		System.out.println("请输入要转换的十进制数:");
		int dec =a.nextInt();
		Scanner b =new Scanner(System.in);
		System.out.println("请输入要转换为的进制数:");
		int scale =b.nextInt();
		int count = 0;
		change(dec, scale,count);
	}
	static char[] arry ={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
	static char[] result =new char[arry.length];
	public static int change(int consult,int scale,int count){
		int rema;				//余数
		rema =consult%scale;
		consult/=scale;
		if(consult==0){
			result[count]=arry[rema];
			for(int i=count+1;i>=0;i--){
				System.out.print(result[i]);
			}
		}else{
			result[count]=arry[rema];
			count++;
			change(consult,scale,count);
		}
		return count;
	}
}
```java

你可能感兴趣的:(程序设计方法与优化)