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)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值