有人可以向我解释这个程序是如何工作的吗?
Can someone explain to me how this program works?
我无法理解下面的程序是如何工作的,如果有人向我解释它究竟是如何运行的,我将不胜感激。
public static void main(String[] args) {
//Enter two number whose GCD needs to be calculated.
Scanner scanner = new Scanner(System.in);
// Title of what program will do
System.out.println("GCD Finder");
System.out.println("");
// Here user is instructed to enter the numbers
System.out.println("Please enter first number: ");
int number1 = scanner.nextInt();
System.out.println("Please enter second number: ");
int number2 = scanner.nextInt();
// The numbers are then calculated using findGCD.
System.out.println("GCD of two numbers " + number1 +" and " + number2 +" is : " + findGCD(number1,number2));
}
private static int findGCD(int number1, int number2) {
//base case
if(number2 == 0){
return number1;
}
// Returns the two numbers
return findGCD(number2, number1%number2);
}
下面这部分是我特别难以理解的部分。请不要犹豫详细解释,我想完全理解它。谢谢你的时间。
private static int findGCD(int number1, int number2) {
//base case
if(number2 == 0){
return number1;
}
// Returns the two numbers
return findGCD(number2, number1%number2);
}
所以你特别纠结的部分:
// A function which returns the greatest common divisor.
private static int findGCD(int number1, int number2) {
//base case
if(number2 == 0){
return number1;
}
// Returns the two numbers
return findGCD(number2, number1%number2);
}
这是一个递归函数,我想这是给您带来困难的原因。为了更好地理解一般的递归函数,请阅读以下内容:http://www.python-course.eu/recursive_functions.php 不要担心它使用 python 作为示例。
在这种情况下,特别是当数字 2 为 0 时,函数将 return 数字 1。如果数字 2 不为零,则它将再次调用该函数,其中数字 2 是数字 1 / 数字 2 的余数,否则已知作为模数 % https://en.wikipedia.org/wiki/Modulo_operation.
您也可以在 while 循环中编写函数:
//PSEUDOCODE WATCH YOURSELF
private static int findGCD(int n1, int n2) {
int result = 0;
while(true) {
if(n2 == 0) {
return result;
}
result = n1;
n1 = n2;
n2 = result-n2;
}
}
希望对您有所帮助?
或者至少不会让任何事情变得更加混乱。
我无法理解下面的程序是如何工作的,如果有人向我解释它究竟是如何运行的,我将不胜感激。
public static void main(String[] args) {
//Enter two number whose GCD needs to be calculated.
Scanner scanner = new Scanner(System.in);
// Title of what program will do
System.out.println("GCD Finder");
System.out.println("");
// Here user is instructed to enter the numbers
System.out.println("Please enter first number: ");
int number1 = scanner.nextInt();
System.out.println("Please enter second number: ");
int number2 = scanner.nextInt();
// The numbers are then calculated using findGCD.
System.out.println("GCD of two numbers " + number1 +" and " + number2 +" is : " + findGCD(number1,number2));
}
private static int findGCD(int number1, int number2) {
//base case
if(number2 == 0){
return number1;
}
// Returns the two numbers
return findGCD(number2, number1%number2);
}
下面这部分是我特别难以理解的部分。请不要犹豫详细解释,我想完全理解它。谢谢你的时间。
private static int findGCD(int number1, int number2) {
//base case
if(number2 == 0){
return number1;
}
// Returns the two numbers
return findGCD(number2, number1%number2);
}
所以你特别纠结的部分:
// A function which returns the greatest common divisor.
private static int findGCD(int number1, int number2) {
//base case
if(number2 == 0){
return number1;
}
// Returns the two numbers
return findGCD(number2, number1%number2);
}
这是一个递归函数,我想这是给您带来困难的原因。为了更好地理解一般的递归函数,请阅读以下内容:http://www.python-course.eu/recursive_functions.php 不要担心它使用 python 作为示例。
在这种情况下,特别是当数字 2 为 0 时,函数将 return 数字 1。如果数字 2 不为零,则它将再次调用该函数,其中数字 2 是数字 1 / 数字 2 的余数,否则已知作为模数 % https://en.wikipedia.org/wiki/Modulo_operation.
您也可以在 while 循环中编写函数:
//PSEUDOCODE WATCH YOURSELF
private static int findGCD(int n1, int n2) {
int result = 0;
while(true) {
if(n2 == 0) {
return result;
}
result = n1;
n1 = n2;
n2 = result-n2;
}
}
希望对您有所帮助? 或者至少不会让任何事情变得更加混乱。