递归

本文探讨了将非负十进制整数转换为2至16进制的方法,通过递归与非递归两种算法实现,并详细解析了递归模型的设计与调用过程,展示了不同进制转换的程序实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一·题目要求
题目1:将非负十进制整数n转换成b进制。(其中b=2~16)
题目2:将任何一个正整数用2的幂次方表示。
基本要求:
1.完成题目1,采用递归思想编程解决问题,要求设计出递归模型(递归出口和递归体的函数式)。
2.程序设计风格良好,实现功能测试代码,确保程序的健壮性。
3.画出递归树或者递归栈的调用过程。
4.实现非递归方法。
提高要求:
1.完成题目2,同时设计出递归模型。
2.确保良好设计风格,完整的进行测试和调试。
二·题目分析
题目一(递归):

public static void toBinary(int num,int b){
		if(num/b==0){//递归出口:当num除以进制数的商为0时,跳出递归
			System.out.print(num%b);
		}
		else{
			toBinary(num/b,b);//递归体:让整数num不断地除以进制数,知道满足递归出口条件
			System.out.print(num%b);
		}
	}

非递归:
运用while循环(当num/b的值为0时跳出循环)

public  static void fun(int num,int b) {
		int p;
		while(num/b!=0) {
			p=num%b;
			num=num/b;
			System.out.print(p);
		}
		System.out.print(num);
	}

三·递归调用过程

在这里插入图片描述
四·运行结果
题目一:
非递归:
在这里插入图片描述
递归:
在这里插入图片描述
五·程序
递归:

package TEST1;

import java.util.Scanner;

public class Test1 {
	public static void main(String args[]){
		System.out.print("请输入一个正整数:");
		Scanner in=new Scanner(System.in);
		int a=in.nextInt();
		System.out.print("请输入一个进制数:");
		int c=in.nextInt();
		toBinary(a,c);//调用递归函数
	}
	public static void toBinary(int num,int b){
		if(num/b==0){//递归出口:当num除以进制数的商为0时,跳出递归
			System.out.print(num%b);
		}
		else{
			toBinary(num/b,b);//递归体:让整数num不断地除以进制数,知道满足递归出口条件
			System.out.print(num%b);
		}
	}

}

非递归:

package TEST2;

import java.util.Scanner;

public class Test2 {
	public static void main(String[] args) {
		System.out.print("请输入一个正数:");
		Scanner in=new Scanner(System.in);
		int a=in.nextInt();
		System.out.print("请输入一个进制数:");
		int c=in.nextInt();
		fun(a,c);
		
	}
	public  static void fun(int num,int b) {
		int p;
		while(num/b!=0) {
			p=num%b;
			num=num/b;
			System.out.print(p);
		}
		System.out.print(num);
	}

}

六·经验总结
在这次作业中,我在用键盘输入数据时遇到了困难,在网上进行搜索,后来解决了问题,在递归过程中会有先后顺序,输出数据是有顺序的,递归过程是一个嵌套一个的,而且要注意跳出递归的条件,不能有错误,否则会导致程序运行不出想要的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值