递归问题

时间:2018-10-20 21:07:49

标签: java recursion

因此,我尝试使用一种简单的递归方法来向后打印数字。我对数字的长度1进行了硬编码,因此,如果我有四个数字,则长度将为3。但是由于某种原因,它只返回我号码的最后一位。

static int len=3;
public static int backwards(int copy)
{
    if(copy==0)
    {
        return 0;
    }
    return backwards(copy/10) + (int)Math.pow(10, len--)*copy%10;

}

2 个答案:

答案 0 :(得分:0)

您应在

之后在递归函数中调用向后()
(int)Math.pow(10, len--)*copy%10;

由于您已将len varibale设置为静态,因此它将在每次递归调用后减少,因此在第一个调用中,您只会得到len = 0,并且您应该在括号中放置copy%10,以便使其具有优先级订单。

下面的代码将帮助您完成工作。

 static int len=3;
  public static int backwards(int copy)
  {
    if(copy==0)
    {
      return 0;
    }
    return  (int)Math.pow(10, len--)*(copy%10) + backwards(copy/10);
  }

答案 1 :(得分:0)

这个简单的逻辑呢?从最后的(number %10 )开始打印剩余的modulus,以得到相反的数字。 我们可以通过取recursively(数字%10)来获得数字的最后一位。打印最后一位数字public static void backwards(int copy) { if(copy<=0) return; System.out.print(copy%10); backwards(copy/10); } ,您将获得所需的结果。

function myFunction(num) {
    var p = document.getElementById("mydata"); 
    for (var i = 0; i <= num; i++) {
        sum = sum + i; 
        p.innerHTML = "Result = " + sum;
    }              
}