当前位置: 首页 > 知识库问答 >
问题:

带递归的java中的阿姆斯特朗数

岳浩宕
2023-03-14

我必须检查一个数字是否是阿姆斯特朗数,使用递归方法

public class ArmStrong {
    public static void main(String[] args){
        System.out.println(isArm(407,0,0));
    }
    static boolean isArm(int n,int last,int sum){
        if(n <= 0 ){
            if(sum == n){
                return true;
            }else{
                return false;
            }
        }
        return isArm(n/10,n%10,sum + last*last*last);
    }
}

当我调试时,在 isArm 的最后一次调用中,当 n 为 4 时,会跳过基语句。

共有1个答案

闾丘玺
2023-03-14

您的代码将立即跳转到答案(如果(n

举个例子,琐碎的,我们试试< code>9,显然不是阿姆斯特朗。

您的代码将首先检查9是否为0-它不是。所以,我们递归,这将与自己(0,9,0 0)一起去。下一次运行应该再一次递归,以便和最后*最后*最后实际上可以完成一些立方体。但它永远不会到达那里-n是0,所以,您跳转到if

由于您的变量名称有点最后给出,指的是上一次运行掉落的数字,但您没有将其立方。

解决方案是在检查n是否为空之前,先简单地获取立方:

你的方法应该做的第一件事是

sum += last*last*last;

然后,第二个问题出现了:这正确地计算出你的总和是407,但是你对照< code>n检查它,显然是< code>0 -当你通过时,你正在“破坏”n。解决这个问题的一个简单方法是将原始的n作为第四个参数传递。我将把它留给读者作为练习。

 类似资料:
  • Python3 实例 如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。 例如1^3 + 5^3 + 3^3 = 153。 1000以内的阿姆斯特朗数: 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407。 以下代码用于检测用户输入的数字是否为阿姆斯特朗数: 实例(Python 3.0+)# Filename : test.py # au

  • 阿姆斯特朗号码是一个等于其各个数字的立方总和的数字。 例如,153是一个阿姆斯特朗号 - 153 = (1)<sup>3</sup> + (5)<sup>3</sup> + (3)<sup>3</sup> 153 = 1 + 125 + 27 153 = 153 算法 (Algorithm) 这个程序的算法很简单 - START Step 1 → Take integer variable

  • 有人能帮忙列出在GKE从零开始用strimzi operator安装Kafka需要的步骤吗.. 我们在其中一个 VM 上安装了一个融合的 kafka 。我们必须摆脱并从头开始在我们的 GKE 环境中安装 strimzi kafka。, 涉及的所有步骤是什么. 浏览本文档:https://strim zi . io/docs/operators/in-development/full/deployi

  • 我们正在考虑使用strim zi Kafka-Bridge(https://strim zi . io/docs/Bridge/latest/# proc-creating-Kafka-Bridge-consumer-Bridge)作为现有Kafka集群的HTTP(s)网关。 留档提到使用任意名称创建消费者以参与消费者组。这些名称随后可用于消费消息、查找或同步偏移量、… 问题是:我的假设是否正确?

  • 我有时间脚本,我需要这样的结果,但不是当地时间我想显示阿姆斯特丹的时间为每个人,有人能帮我吗?我的代码是: http://www.w3schools.com/js/tryit.asp?filename=tryjs_timing_clock 我想要相同的,但这将只显示阿姆斯特丹的时间为每个游客从任何国家。谢谢你提前:)

  • 我在Kubernetes是个新手。我想知道在kubernetes环境中最好的生产部署场景是什么。 在过去的学派中,我习惯于将Web服务器(例如Nginx或Apache)放在DMZ层,而将其放在其他层(我们称之为层)。这样,只有web服务器在DMZ上,恶意攻击只能在web服务器VM上进行。 据我所知,K8S部署不再需要这种方法;这是因为K8S自己处理网络、吊舱和流量。所以我在考虑最确定的部署方案。