java-递归及非递归实现十进制数向任意进制转换

一. 题目要求

题目:将非负十进制整数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)
在这里插入图片描述

发布了20 篇原创文章 · 获赞 11 · 访问量 3281
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览