小编use*_*207的帖子

递归方法如何计算字符串中的空格?

我试图完全理解该方法的工作原理,请参阅下面的代码:

public static void main(String[] args) {
    System.out.println(countspaces("a number of spaces "));
}

public static int countspaces(String s) {
    if (s.length() == 0)
        return 0;
    else
        return (s.charAt(0) == ' ' ? 1 : 0) + countspaces(s.substring(1));
}
Run Code Online (Sandbox Code Playgroud)

我使用BlueJ调试了该方法.这条线:

return (s.charAt(0) == ' ' ? 1 : 0) + countspaces(s.substring(1));
Run Code Online (Sandbox Code Playgroud)

首先检查索引零处的字符是否为空格,然后再次调用自身(这使得它递归)从索引1开始的s的子字符串作为参数有效地将参数从"多个空格"更改为"空格的数量"直到参数的长度()达到0为止.我没有得到的是为什么它不返回01000000100100000010(最后的0是空字符串s终止循环)但是4?我无法看到代码中的哪个位置总结了1的返回值

(s.charAt(0) == ' ' ? 1 : 0)
Run Code Online (Sandbox Code Playgroud)

并忽略了0.请告诉我我的推理缺少什么.

非常感谢

格热戈日(格雷格)

java oop recursion

5
推荐指数
1
解决办法
1349
查看次数

我怎样才能否定Java Fraction,这是我创建的一个类

这是我的Fraction类代码,有几种方法,我的要求是将分子作为分母int:

/**
 * @author GKsiazek
 * Reference: https://github.com/kiprobinson/BigFraction/blob/master/com/github/kiprobinson/util/BigFraction.java
 * Reference: https://github.com/kiprobinson/BigFraction/blob/master/com/github/kiprobinson/junit/BigFractionTest.java
 */
package Fraction;
import java.math.*;
public class Fraction {

    private int numerator;
    private int denominator;


    /**
     * Constructor with two int parameters
     * @param num is numerator
     * @param den is denominator
     */
    public Fraction()
    {}

    public Fraction(int num, int den) {
        if (den==0){//denominator cannot be zero
            System.out.println("Denominator cannot be zero");
            return;
            }
        this.numerator = num;
        this.denominator = den;
        this.normalize();
    }

    /**
     * Constructor with one int …
Run Code Online (Sandbox Code Playgroud)

java

3
推荐指数
1
解决办法
1484
查看次数

标签 统计

java ×2

oop ×1

recursion ×1