有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我是递归地做这件事,还是将其视为迭代?

public T get(int i) {

    if(i == 0 ){
        T val = cur.getData();
        cur = head;
        return val;
    }
    else{
        cur = cur.getNext();
        return get(i-1);
    }

}

//我必须递归地解决这个问题,我不能使用迭代,这是使用迭代吗


共 (1) 个答案

  1. # 1 楼答案

    Am I doing this recursively or would this be considered iteration?

    您的函数正在调用自身:

    public T get(int i) {
    
        if(i == 0 ){
            T val = cur.getData();
            cur = head;
            return val;
        }
        else{
            cur = cur.getNext();
            return get(i-1); // <============ Here
        }
    
    }
    

    根据定义,这是递归,而不是迭代

    迭代看起来像这样:

    public T get(int i) {
        T val = cur.getData();
        while (i  > 0) {
            cur = cur.getNext();
            val = cur.getData();
        }
        cur = head;
        return val;
    }
    

    在那里,我们只是在get内循环,我们没有让它自己调用。这并不是递归示例的完美翻译,因为如果i一开始是负数,那么它处理事情的方式就有点不同,但它可能符合目的(两个版本可能都可以使用某种保护措施来防止i一开始是负数)