首页 > 编程语言 >【Java】使用递归完成水仙花数

【Java】使用递归完成水仙花数

时间:2024-03-19 21:58:45浏览次数:30  
标签:Java num1 递归 int num static NUM num2 水仙花

总所周知,水仙花数没什么高速的数学解法,尤其是在不确定位数时。
但暴力解法实在直接粗暴,为了更唬人代码美学(真的有那样的东西吗),我用递归写了个水仙花数。

import java.util.Scanner;

public class Main {
	static int n;
	
	// 算次幂
	static int power(int NUM) {
		int num=NUM;
		for (int i = 1; i < n; i++) {//因为NUM==i,而不是1,所以NUM的n次方只要循环n-1次
			NUM *= num;
		}
		return NUM;
	}

	// 算数位
	static int digital(int N) {
		int num = 1;

		for (int i = 1; i < N; i++) {
			num *= 10;
		}
		return num;
	}

	/*N为层数
	 num1、num2分别寄存`x^n+y^n+……=10^(n-1)*x+10^(n-2)*y+……`等号两边的值,用于比较大小*/
	static void cycleJudge(int N,int num1,int num2){
		    if(N==1){
		        for(int i=0;i<=9;i++){
		            if(num1+ power(i)==num2+digital(N)*i) {
		        	    System.out.println(num1+power(i));
		            }
		        }
		    }else{
			    int i=0;
			    for(i=(N==n)?1:0;i<=9;i++){
				    cycleJudge(N-1,num1+ power(i),num2+digital(N)*i);
			        }
		    }
		}

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		n = sc.nextInt();
		cycleJudge(n, 0, 0);
	}
}

标签:Java,num1,递归,int,num,static,NUM,num2,水仙花
From: https://blog.csdn.net/weixin_73964382/article/details/136856414

相关文章

  • 简历管理系统java+springboot+vue
    简历管理系统1、功能介绍1.1、演示视频2、系统部分功能展示管理员功能模块用户管理功能模块模板类型管理报名招聘管理3、系统分析技术可行性操作可行性1、功能介绍本文以Java为开发技术,实现了一个简历管理系统。主要功能:管理员登录,通过填写用户名、密码、角色......
  • 前端基础之JavaScript的数据类型
    一、常用的调试语句方法说明示例归属alert(msg);警告,在浏览器中弹出一个警告框,内容为alert里面的内容alert("Surprise");浏览器closole.log(msg);控制台,在控制台内输出一些内容console.log("Surprise");浏览器prompt(问题,值);对话框,第一个参数是询问内......
  • 前端基础之JavaScript引入
    一、什么是JavaScriptJavaScript是一门跨平台、面向对象的脚本语言(不需要编译,直接解释运行即可),来控制网页的行为,它能使网页可交互。脚本语言:不需要编译,运行过程中由js解释器(js引擎)逐行来进行解释并执行。现在也可以基于Node.js技术进行服务器端编程W3C标准:网页主要由......
  • Java 编程实例:相加数字、计算单词数、字符串反转、元素求和、矩形面积及奇偶判断
    Java如何相加两个数字相加两个数字示例intx=5;inty=6;intsum=x+y;System.out.println(sum);//打印x+y的和输出11解释首先,声明两个int类型的变量x和y,并分别赋值为5和6。然后,使用+运算符将x和y相加,并将结果赋给变量sum。最后,使用Sy......
  • 使用java代码对数据库中的表单数据进行:增,删,改,查,操作。
    1、数据库表单如下:2、在项目中创建TestLinkMysql.java类,用于数据库的增删改查操作。代码如下: packageLink.Mysql;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLExcept......
  • JAVA并发编程
    Java并发编程是指在Java程序中同时运行多个任务的能力。并发编程允许开发人员编写高效的程序,特别是在多核处理器和多处理器系统中。Java提供了丰富的API来处理并发编程,如线程(Thread)、同步(synchronization)、锁(Locks)、并发集合(java.util.concurrentCollections)、执行器(Execut......
  • 实现数据结构与算法学习笔记(java)——顺序表顺序栈代码实现
    顺序表实现顺序栈实现......
  • Java类和接口的工厂模式
    作者平时学习的小总结,希望可以帮到你更好了解。本章节介绍Java类和接口的工厂模式,帮助你对工厂模式有一个新的了解,这三种工厂模式的升级基于前一代的基础上进行升级的,所以一步一步看下去效果会更好。1.简单工厂模式简单工厂模式就是我们把一些类(比如说某一产品汽车,有很多品种看......
  • Java基础 --- 面向对象综合训练
    面向对象综合训练案例一:文字版格斗游戏格斗游戏,每个游戏角色的姓名,血量,都不相同,在选定人物的时候(new对象的时候),这些信息就应该被确定下来。补充:publicclassTest{publicstaticvoidmain(String[]args){//两部分参数//第一部分参数:要输出的内容%......
  • Java中static
    一、被static修饰的成员变量叫做静态变量特点:被该类所有对象共享,不属于对象,属于类,随着类的加载而加载,优先于对象存在调用方式:1.类名调用   2.对象名调用二、被static修饰的成员方法,叫做静态方法特点:多用在测试类和工具类中,JavaBean类中很少会用调用方式:1.类名调用 ......