第六章

一、题目
题目1:将非负十进制整数n转换成b进制。(其中b=2~16)
1.完成题目1,采用递归思想编程解决问题,要求设计出递归模型(递归出口和递归体的函数式)。
2.程序设计风格良好,实现功能测试代码,确保程序的健壮性。
3.画出递归树或者递归栈的调用过程。
4.实现非递归方法。
二、算法设计
在这里插入图片描述
三、程序运行及测试截图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述四、源程序
1.递归
import java.util.*;
public class 题目一 {
static int m=0;
public static int s(int n,int b)
{
if(n<b)
{System.out.print(n+"\t");
}
else
{m++;
if(m1)
System.out.println(“将”+n+“转化为”+b+“进制数”);
s(n/b,b);
if(n%b
10)
System.out.print(“A”+"\t");
else if(n%b11)
System.out.print(“B”+"\t");
else if(n%b
12)
System.out.print(“C”+"\t");
else if(n%b13)
System.out.print(“D”+"\t");
else if(n%b
14)
System.out.print(“E”+"\t");
else if(n%b==15)
System.out.print(“F”+"\t");
else
System.out.print(n%b+"\t");

}	

return 0;
}
public static void main(String [] args) {
int a=0;
int b=0;
Scanner in= new Scanner(System.in);
System.out.println(“请输入一个自然数”);
a=in.nextInt();
System.out.println(“请输入要转化为的进制数”);
b=in.nextInt();
s(a,b);
}
2.非递归
public static void main(String [] args) {
int n=0;
int m=0;
int b=0;
ArrayList s=new ArrayList();
Object [] arr=new Object [s.size()];
Scanner in= new Scanner(System.in);
System.out.println(“请输入一个自然数”);
n=in.nextInt();
System.out.println(“请输入要转化为的进制数”);
b=in.nextInt();
while(n>=b)
{
m++;
if(m==1)
System.out.println(“将”+n+“转化为”+b+“进制数”);

    if(n%b==10)
			s.add("A");
	else if(n%b==11)
	    	s.add("B");
	else if(n%b==12)
		s.add("C");
	else if(n%b==13)
		s.add("D");
	else if(n%b==14)
		s.add("E");
	else if(n%b==15)
		s.add("F");
	else 
		s.add(n%b);
		n=n/b;
}
if(n<b)
	s.add(n);
System.out.println();
for(int i=s.size()-1;i>=0;i--) 
{
	System.out.print(s.get(i));;
}

}
五、总结
在此次针对将一个自然数转化为任意进制数的过程中,我采取了递归和非递归二种做法,让我更加深刻的理解了递归的用法和含义,在进行递归操作时,只要利用最后递归返回的过程将所得只进行输出就可以了。但是在利用非递归进行编写时,由于没有办法确定数字的长度,我采用了集合进行编写,最后将集合进行逆序输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值