姐姐,哥哥们,菜鸟又来问一个关于return的问题。

joyscsnd 2012-10-26 08:05:49

public class return1 {
public static int gcd(int a, int b) {
int min = a;
int max = b;
if (a > b) {
min = b;
max = a;
}
if (min == 0)
return max;
else
return gcd(min, max - min);
}
public static void main(String[] args) {
System.out.println(return1.gcd(75, 15));
}

}
小弟有一个问题:上面表达式输出结果是15
请问大家步骤是怎么来的,尽量详细点,谢谢
小弟还有个问题:开始的时候 gcd(int a, int b)
int min = a;
int max = b;
到后面if(a>b) min = b;
max = a; 他们为什么又不同了呢,是互换位置了吗?
小弟刚学java几天。希望得到大家的指点。谢谢
...全文
134 6 打赏 收藏 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiang9011 2012-10-26
  • 打赏
  • 举报
回复
首先a=75,b=15,a>b,所以执行第一个if语句 min=15,max=75然后进行判断min==0?显然的不是,就运行else的语句,return gcd(min, max - min),即return gcd(12,60),然后同上面再重复判断,知道min==0,程序结束。
joyscsnd 2012-10-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
这是递归。
第一遍 min=15,max=75
第2遍 min=15,max=60
第3遍 min=15,max=45
第4遍 min=15,max=30
第5遍 min=15,max=15
第6遍 min=15,max=0
当执行到第六遍的时候,满足a>b 而且满足min=0;因此返回了15
返回15,为什么0不返回呢?
  • 打赏
  • 举报
回复
debug一下,看看编译器是怎么一步步走的
joyscsnd 2012-10-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
这是递归。
第一遍 min=15,max=75
第2遍 min=15,max=60
第3遍 min=15,max=45
第4遍 min=15,max=30
第5遍 min=15,max=15
第6遍 min=15,max=0
当执行到第六遍的时候,满足a>b 而且满足min=0;因此返回了15

if(a>b)
{
min = b;
max = a;
}
是换位置。
[/Quote]

java语法不是从左到右,至上而下执行的吗?怎么跑到最后开始执行了?另外return1.gcd是什么意思啊?这是一种书写规范吗?
haorengoodman 2012-10-26
  • 打赏
  • 举报
回复
1>min=15 , max=75;min!=0;gcd(min, max - min);
2>min=15 , max=60;min!=0;gcd(min, max - min);
3>min=15 , max=45;min!=0;gcd(min, max - min);
4>min=15 , max=30;min!=0;gcd(min, max - min);
5>min=15 , max=15;min!=0;gcd(min, max - min);
6>min=0 , max=15;min==0,结束。

单步一下。
wang7535067 2012-10-26
  • 打赏
  • 举报
回复
这是递归。
第一遍 min=15,max=75
第2遍 min=15,max=60
第3遍 min=15,max=45
第4遍 min=15,max=30
第5遍 min=15,max=15
第6遍 min=15,max=0
当执行到第六遍的时候,满足a>b 而且满足min=0;因此返回了15

if(a>b)
{
min = b;
max = a;
}
是换位置。
【期刊论文复现】多元宇宙算法求解电力系统多目标优化(Matlab实现)内容概要:本文复现了期刊论文中提出的多元宇宙算法(Multi-Verse Optimizer, MVO)用于求解电力系统中的多目标优化调度,采用Matlab进行代码实现。该算法受宇宙中黑洞、白洞和虫洞等天文现象启发,通过数学建模模拟多目标搜索过程,具有较强的全局寻优能力和收敛性能。文中将其应用于典型的电力系统经济调度场景,如考虑燃料成本、排放量等多个优化目标的微电网或多能源系统调度,通过构建合理的数学模型和约束条件,实现对多个冲突目标的协同优化。同时,文章提供了完整的代码框架与仿真结果,便于读者理解和复现。; 适合人群:具备一定Matlab编程基础和优化算法基础知识的研究生、科研人员及从事电力系统优化调度工作的工程师。; 使用场景及目标:①学习和掌握新型智能优化算法——多元宇宙算法的基本原理与实现方法;②将其应用于电力系统经济调度、微电网优化、多目标决策等领域的模型求解;③为科研工作提供可复现的代码参考和技术支持。; 阅读建议:建议读者结合Matlab代码逐行理解算法实现细节,重点关注目标函数建模、约束处理及MVO算法核心迭代逻辑,并尝试在不同测试系统中进行参数调优与性能对比,以深入掌握其应用技巧。

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧