递归除以 3
Recursive dividing by 3
使用递归,我尝试将输入除以 3,直到结果小于 1。
到目前为止,这是我所拥有的,但我的输出总是像 1 1 1 1 1 1 1 1
。我相信我知道我的代码错误在哪里,但我想不出要使用什么输入或者我的方法编码是否错误。我在我认为问题所在的地方贴了一张纸条,想知道是否有人可以支持就如何解决这个问题给出提示。
还有,如何结束循环?
package divideby3;
import java.util.Scanner;
public class DivideBy3 {
public static void main(String[] args) {
System.out.print("Enter number >= 1:");
int n = new Scanner(System.in).nextInt();
System.out.println("\n Negative result is:" + n);
for(int i = 1; i <= n; i++) {
System.out.print(Recusion(i) + " ");
}
}
public static double Recusion(double n) {
if(n >= 1) {
//not sure what to put here
return ;
}
else {
System.out.println("Sorry thats not number over 1!");
}
return Recusion(n / 3);
}
public static double Loop(double n) {
if(n >= 1) {
return 1;
}
double input = 0, divide = 3;
for(double i = 0; i <= n; i++) {
divide = (input / divide);
}
return divide;
}
}
看来你不明白递归的概念。仔细阅读它会很有帮助。简单地说,递归是一种函数递归调用自身直到满足条件的技术。
这是一个简单的例子来说明它是如何工作的。
public static void main(String[] args)
{
System.out.print(RecursiveDivision(100,3));
}
public static double RecursiveDivision(double dividend, int divisor) {
if (dividend < 1)
return dividend;
return RecursiveDivision(dividend/divisor, divisor);
}
如前所述
public static void main(String[] args)
{
//you decide the number at n
System.out.print(RecursiveDivision(n,3));
}
public static double RecursiveDivision(double dividend, int divisor) {
if (dividend < 1)
return dividend;
return RecursiveDivision(dividend/divisor, divisor);
}
使用递归,我尝试将输入除以 3,直到结果小于 1。
到目前为止,这是我所拥有的,但我的输出总是像 1 1 1 1 1 1 1 1
。我相信我知道我的代码错误在哪里,但我想不出要使用什么输入或者我的方法编码是否错误。我在我认为问题所在的地方贴了一张纸条,想知道是否有人可以支持就如何解决这个问题给出提示。
还有,如何结束循环?
package divideby3;
import java.util.Scanner;
public class DivideBy3 {
public static void main(String[] args) {
System.out.print("Enter number >= 1:");
int n = new Scanner(System.in).nextInt();
System.out.println("\n Negative result is:" + n);
for(int i = 1; i <= n; i++) {
System.out.print(Recusion(i) + " ");
}
}
public static double Recusion(double n) {
if(n >= 1) {
//not sure what to put here
return ;
}
else {
System.out.println("Sorry thats not number over 1!");
}
return Recusion(n / 3);
}
public static double Loop(double n) {
if(n >= 1) {
return 1;
}
double input = 0, divide = 3;
for(double i = 0; i <= n; i++) {
divide = (input / divide);
}
return divide;
}
}
看来你不明白递归的概念。仔细阅读它会很有帮助。简单地说,递归是一种函数递归调用自身直到满足条件的技术。
这是一个简单的例子来说明它是如何工作的。
public static void main(String[] args)
{
System.out.print(RecursiveDivision(100,3));
}
public static double RecursiveDivision(double dividend, int divisor) {
if (dividend < 1)
return dividend;
return RecursiveDivision(dividend/divisor, divisor);
}
如前所述
public static void main(String[] args)
{
//you decide the number at n
System.out.print(RecursiveDivision(n,3));
}
public static double RecursiveDivision(double dividend, int divisor) {
if (dividend < 1)
return dividend;
return RecursiveDivision(dividend/divisor, divisor);
}