A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ╮福尔摩斯` 中级黑马   /  2014-7-11 22:14  /  1503 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

来几个大神 帮我算下     并且 解释下:)(主要是解释下)

class  DiGui
{
public static void main(String[] args)
{
  
int sum=getSum(50);
System.out.println(sum);
}
static int getSum(int n)
{
if (n==1)
{
  return n*n;
}
int temp=getSum(n-1);
  return temp+n*n;

}
}

评分

参与人数 1黑马币 +5 收起 理由
wojiaojay + 5 很给力!

查看全部评分

12 个回复

正序浏览
郑飞 发表于 2014-7-14 18:20
亲 你把代码层次摆好啊 太难看了 蛋疼
递归在这里:
int temp=getSum(n-1);

额~~是有点乱
回复 使用道具 举报
晕了  我说这么眼熟  我回答过

点评

谢谢哈  发表于 2014-7-14 22:26
回复 使用道具 举报
郑飞 高级黑马 2014-7-14 18:20:35
9#
亲 你把代码层次摆好啊 太难看了 蛋疼
递归在这里:
int temp=getSum(n-1);
  return temp+n*n;
实在看不懂的话 代个数字进去 一下明白  拿10做例子 返回的是 getSun(9)+10*10
第二次进入方法就是 getSun(8)+9*9+10*10
一直到 1*1+......+9*9+10*10
然后回过头去好好看代码
回复 使用道具 举报
杨冬冬 发表于 2014-7-13 22:20
它主要是Eclipse开发工具中帮助程序员排错,向程序员展现所有的开发流程而使用的一种方法 ...

我刚从记事本升级到EditPlus   Eclipse更高级吗?    看来要学的还很多啊
回复 使用道具 举报
它主要是Eclipse开发工具中帮助程序员排错,向程序员展现所有的开发流程而使用的一种方法
回复 使用道具 举报
杨冬冬 发表于 2014-7-11 23:40
你可以进行断点调试,查看他的流程,希望能帮到你

断点调试是什么
回复 使用道具 举报
你可以进行断点调试,查看他的流程,希望能帮到你
回复 使用道具 举报
恩  我再琢磨琢磨
回复 使用道具 举报
  1. class  DiGui
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.   
  6.                 int sum=getSum(50);
  7.                 System.out.println(sum);
  8.         }

  9.         //计算一个数的阶乘
  10.         static int getSum(int n)
  11.         {
  12.                 //递归的结束条件
  13.                 //从最大数递归到最小1就结束递归,开始一层一层返回值
  14.                 if (n==1)
  15.                 {
  16.                         return 1;
  17.                 }
  18.                 //进入递归的语句,自己调用自己
  19.                 //但是参数比之前少1,每一次调用参数就减1
  20.                 int temp=getSum(n-1);
  21.                
  22.                 //调用完返回值
  23.                 return temp+n*n;

  24.         }
  25. }
复制代码

代码都是一行一行执行,遇到方法则优先去执行方法,回头再继续执行
图简单画的,希望你能看懂,按数字去走应该比较容易理解了吧

评分

参与人数 1技术分 +1 收起 理由
淡夜清风 + 1 很给力!

查看全部评分

回复 使用道具 举报
深层递归调用:答案是42925
做到结果是小于等于50的数的平方的和
我先讲第一步,你就应该会理解点


class  DiGui
{
public static void main(String[] args)
{
  
int sum=getSum(50);   第一次执行:n=50
System.out.println(sum);
}
static int getSum(int n)
{
if (n==1)  n为50 所以不等于1,不执行这一步
{
  return n*n;
}
int temp=getSum(n-1);  直接跳转到这一步,执行这一步,结果是getSun(getSun(49)+50*50 );然后继续执行里面的那个getSun;知道getSun中的n的值为1为止;
  return temp+n*n;

}
}

点评

好厉害。 我来了解了解  发表于 2014-7-13 20:17

评分

参与人数 1技术分 +1 收起 理由
淡夜清风 + 1 赞一个!

查看全部评分

回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马