首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Square函数

Java Square函数
EN

Stack Overflow用户
提问于 2013-04-25 18:10:10
回答 3查看 3.2K关注 0票数 0

有没有人能用几行评论来解释这些方法。它们是用来求一个数的平方的。一种是使用递归,实现,另一种是正常的

代码语言:javascript
复制
 public static int sq(int n)
{
    int i = 0 ;
    int result = 0 ;

    while(i < n){         
        result = result + 2*i + 1 ;
        i = i + 1 ;
    }
    return result ;
}

public static int recSq(int n)
{
    if(n == 0){
        return 0 ;
    } else {
        return recSq(n - 1) + 2*(n - 1) + 1 ;
    }
}

public static int implementSq(int n)
{
    int i ;
    int result = 0 ;

    for(i = 0 ; i < n ; i++){
        result = result + 2*i + 1 ;       
    }
    return result ;
} 
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-25 18:15:03

第一个方法是将数字乘以2n倍,使用一个循环来增加一个局部变量,第二个方法是完全相同的,只是使用了递归。,,

  • 。每一步都会减少n,最后一种情况会返回0。所有的调用都再次调用同一个函数,除了参数值为0的不同参数,然后该函数将返回0。递归不是一件简单的事情,为了更好地理解它,试着想象一下代码流。

示例: recSq(2)

代码语言:javascript
复制
  4 recSq(2)
  |<- 1  reqSq(1)+2*1+1
      |<-0  reqSq(0)+2*0 + 1
         |<-  0

reqSq(2)被调用,因此我们将计算if并开始计算返回语句。第一个操作是当n=2时调用reqSq(n-1)的方法,然后调用reqSq(1)。

reqSq(1)被调用,因此我们将计算if并开始计算返回语句。第一个操作是当n=1时调用reqSq(n-1)的方法,然后调用reqSq(0)。

reqSq( 0 )被调用,所以我们将计算if,它是真的,因为n为==0,然后我们返回0。

reqSq( 1 )调用已经完成了reqSq(0)的计算,然后我们可以继续计算剩余的0+ 2*(n- 1 ) +1 -> 0+0+1。我们将返回值1。

reqSq(2)已经完成了reqSq( 1 )的计算,然后我们可以继续计算剩余的1+ 2*(n-1) +1 -> 1+2+1。我们将返回值4。

最后一个是循环,实际上和第一个循环一样,只是使用了

  • 而不是while循环。在for循环中,您在一行中声明初始化条件、continue条件和递增操作。因此,在for循环以值0开始的情况下,当i
票数 0
EN

Stack Overflow用户

发布于 2013-04-25 18:19:21

我认为这一定是一个家庭作业,否则做任何事情都是一种疯狂的方式。因此,我是否可以建议使用集成开发环境(例如Netbeans),然后使用它逐行逐步执行代码。到目前为止,这是理解代码在做什么的最简单的方法。如果我们只是告诉你,你不会从中得到任何好处。

票数 1
EN

Stack Overflow用户

发布于 2013-04-25 18:14:05

为什么你要用递归或循环来解决这么简单的问题呢?

代码语言:javascript
复制
public static int sq(int n) {
    return n * n;
}

就这样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16212000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档