Java-使用递归求和一个数字,该数字与该数字的差和3的倍数之差

Hor井ie

我正在用代数公式进行练习,以练习Java中递归的使用。

我正在尝试编写一种返回n +(n-3)+(n-6)+(n-9)... + 0的结果的方法。

例如,当n = 7时,结果应为12。当n = 10时,结果应为22。

到目前为止,这就是我所拥有的:

public static int sumDownBy3(int n)
{

    if(triSum <= 0)
    {
        return sum;
    }

    sum = n;
    triVar += 3;
    triSum = (n - triVar);

    return sumDownBy3(n + triSum);
}

但是,当我编译并运行它时,它不会返回预期的结果。如何解决此方法以正确应用我要模拟的公式?

乔尼·亨利(Jonny Henly)

由于这不是一项作业,请练习,然后基于您问题中给出的信息,这是一个可行的解决方案。此解决方案适用于所有人n,但n <= 0始终会返回0

public static int sumDownBy3(int n) {
    if (n <= 0) {
        return 0;
    }

    return n + sumDownBy3(n - 3);
}

此示例没有使用额外的参数或全局/类变量来跟踪总和,而仅使用堆栈来跟踪总和。这种方法的缺点是,对于非常大量的堆栈,堆栈可能会溢出和/或程序可能会锁定。

输出:

sumDownBy3(7)  = 12
sumDownBy3(10) = 22
sumDownBy3(9)  = 18

细分sumDownBy3(10)

sumDownBy3(10): 10 !<= 0 -> return 10 + sumDownBy3(10 - 3)
sumDownBy3( 7):  7 !<= 0 -> return  7 + sumDownBy3( 7 - 3)
sumDownBy3( 4):  4 !<= 0 -> return  4 + sumDownBy3( 4 - 3)
sumDownBy3( 1):  1 !<= 0 -> return  1 + sumDownBy3( 1 - 3)
sumDownBy3(-2): -2  <= 0 -> return  0

So 0 + 1 + 4 + 7 + 10 ='s 22

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Java中的一种递归方法,该方法返回整数的arrayList(只是其中之一),它们求和为一个数字,如果没有,则为null

来自分类Dev

Java:将值与数组进行比较;使前3个数字大于该值

来自分类Dev

如何创建一个使用种子创建3个数字的Java随机数生成器?

来自分类Dev

Java如何删除长号的最后一个数字?

来自分类Dev

如何使用 Java Modulus 找到两个数字的倍数

来自分类Dev

Java 正在使用数组方法打印最后一个数字,忽略其他数字

来自分类Dev

如何在字符串中找到最后一个字母,该字符串是java中数字和字符的组合

来自分类Dev

一个获取整数、分隔各个数字并给出数字总和的 Java 程序

来自分类Dev

如何在不使用String的情况下从Java中截断一个数字

来自分类Dev

为什么我的代码只比较数组的第一个和最后一个数字 - Java

来自分类Dev

用Java计算介于第一个和最后一个数字之间的所有数字的平均值

来自分类Dev

如何在Java上将整数的第二个数字与最后一个数字相加?

来自分类Dev

如果数字等于0,则选择无限循环;如果该数字大于0,则选择循环直到某个数字-Java

来自分类Dev

使数字倍数为 100 和 50 java

来自分类Dev

使用递归Java的数字总和

来自分类Dev

如何用逗号将数字打印为Java中的数千个分隔符。我也想在该点后仅打印2个数字

来自分类Dev

递归:求和一个数字,直到剩下一个数字

来自分类Dev

输入数字并求和-Java

来自分类Dev

已解决的Java:通过lambda表达式查找第一个数字最不同的数字

来自分类Dev

为什么Java中的for循环会给我一个数字,而不是0到4的数字列表?

来自分类Dev

编写一个程序来查找两个数字的余数,而不使用%运算符?在Java中

来自分类Dev

我如何在不使用String的情况下从Java中截断一个数字

来自分类Dev

我可以使用一个for循环,该循环在每次迭代中移1个新位来获取Java中的一些8位数字吗?

来自分类Dev

给定一个数字,找到下一个更大的数字,该数字具有唯一数字,但0和2

来自分类Dev

在Java中用一个字母和一个数字为字符串定义正则表达式

来自分类Dev

Java 正则表达式至少需要一个字母和一个数字。还允许任何特殊字符

来自分类Dev

Java 8:如何在流中获取大于10的第一个数字?

来自分类Dev

从另一个数字中删除所有9的Java方法?

来自分类Dev

查找.txt文件的第一个数字-Java

Related 相关文章

  1. 1

    Java中的一种递归方法,该方法返回整数的arrayList(只是其中之一),它们求和为一个数字,如果没有,则为null

  2. 2

    Java:将值与数组进行比较;使前3个数字大于该值

  3. 3

    如何创建一个使用种子创建3个数字的Java随机数生成器?

  4. 4

    Java如何删除长号的最后一个数字?

  5. 5

    如何使用 Java Modulus 找到两个数字的倍数

  6. 6

    Java 正在使用数组方法打印最后一个数字,忽略其他数字

  7. 7

    如何在字符串中找到最后一个字母,该字符串是java中数字和字符的组合

  8. 8

    一个获取整数、分隔各个数字并给出数字总和的 Java 程序

  9. 9

    如何在不使用String的情况下从Java中截断一个数字

  10. 10

    为什么我的代码只比较数组的第一个和最后一个数字 - Java

  11. 11

    用Java计算介于第一个和最后一个数字之间的所有数字的平均值

  12. 12

    如何在Java上将整数的第二个数字与最后一个数字相加?

  13. 13

    如果数字等于0,则选择无限循环;如果该数字大于0,则选择循环直到某个数字-Java

  14. 14

    使数字倍数为 100 和 50 java

  15. 15

    使用递归Java的数字总和

  16. 16

    如何用逗号将数字打印为Java中的数千个分隔符。我也想在该点后仅打印2个数字

  17. 17

    递归:求和一个数字,直到剩下一个数字

  18. 18

    输入数字并求和-Java

  19. 19

    已解决的Java:通过lambda表达式查找第一个数字最不同的数字

  20. 20

    为什么Java中的for循环会给我一个数字,而不是0到4的数字列表?

  21. 21

    编写一个程序来查找两个数字的余数,而不使用%运算符?在Java中

  22. 22

    我如何在不使用String的情况下从Java中截断一个数字

  23. 23

    我可以使用一个for循环,该循环在每次迭代中移1个新位来获取Java中的一些8位数字吗?

  24. 24

    给定一个数字,找到下一个更大的数字,该数字具有唯一数字,但0和2

  25. 25

    在Java中用一个字母和一个数字为字符串定义正则表达式

  26. 26

    Java 正则表达式至少需要一个字母和一个数字。还允许任何特殊字符

  27. 27

    Java 8:如何在流中获取大于10的第一个数字?

  28. 28

    从另一个数字中删除所有9的Java方法?

  29. 29

    查找.txt文件的第一个数字-Java

热门标签

归档