第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用遞歸從數(shù)組中找到第 i 個布爾值?

如何使用遞歸從數(shù)組中找到第 i 個布爾值?

暮色呼如 2023-06-28 16:08:52
從布爾數(shù)組中查找第 i 個布爾值,例如:數(shù)組為 {true, true , false, false, true},該方法將輸出顯示第三個真值的 int,即 4。我已經(jīng)嘗試過一些代碼,它可以工作,但我需要使用遞歸,而不是 while 函數(shù)。public static int check(int n, boolean[] b, boolean val){        int i = 0;        int count = 0;        while(i < b.length && count <= n){            if(b[i] == val) count++;            i++;        }                if(n == count){            return i;        }        else{            return -1;        }    } 
查看完整描述

3 回答

?
叮當(dāng)貓咪

TA貢獻(xiàn)1776條經(jīng)驗 獲得超12個贊

你可以這樣做:


int f(int n,boolean[] b,boolean val,int i)

{

    if(i>=b.length)

        return -1;

    if(b[i]==val)

    {    

        if(n==1)

        return i;

        else

        return f(n-1,b,val,i+1);

    }

    return f(n,b,val,i+1);

}


查看完整回答
反對 回復(fù) 2023-06-28
?
天涯盡頭無女友

TA貢獻(xiàn)1831條經(jīng)驗 獲得超9個贊

public class Recursion {

private static boolean[] b = {true, true , false, false, true};

private static int i = 0;

private static int position = 0;


public static void check( int i, boolean[] b, boolean val ) {

    if( i < b.length ) {


        if( b[i] == val ) {

            position = i;

        }


        i++;

        check( i, b, val );

    }

}


public static void main(String[] args) {

    boolean myChoice = true;

    check( Recursion.i, Recursion.b, myChoice );


    System.out.println( "Last " + myChoice + " position computed is " + position );

}

}


遞歸是關(guān)于調(diào)用自身的方法。在上面的示例中,該方法檢查“計數(shù)器”變量 i 是否小于布爾數(shù)組的長度。接下來檢查數(shù)組的當(dāng)前元素是否與選擇匹配。如果是,則將計數(shù)器值分配給該位置(最后計算的位置)。計數(shù)器遞增,并且該方法調(diào)用自身。


該過程一直持續(xù)到 i 等于布爾數(shù)組的大小。此時,該方法停止調(diào)用自身。


查看完整回答
反對 回復(fù) 2023-06-28
?
aluckdog

TA貢獻(xiàn)1847條經(jīng)驗 獲得超7個贊

實際的函數(shù)從 0 開始計數(shù),所以我在里面?zhèn)鬟f了一個位置-1。如果 i = 0,那么很明顯我們應(yīng)該返回什么 - 第一個條目的索引。如果 i 大于 0,假設(shè)它是 1,那么我們將數(shù)組分成兩部分:我們已經(jīng)搜索到的包含第一個條目的部分,以及數(shù)組的其余部分。這可以使用 subList() 來完成?,F(xiàn)在我們可以在數(shù)組的其余部分上使用帶有 i-1 的函數(shù),這將找到數(shù)組第二部分中第一個條目的索引。


此外,我們還必須添加我們剪切掉的內(nèi)容的大小,這將list.subList(0, list.indexOf(value) + 1).size()需要記住原始數(shù)組中的索引。


    public static void main(String[] args) {

        List<Boolean> list = Arrays.asList(true, true, false, false, true, true, false, false); //8

        int position = 4; //find index of fourth false

        System.out.println(recursiveSearch(list, false, position - 1));


        position = 2; //find index of second true

        System.out.println(recursiveSearch(list, true, position - 1));

    }


    private static int recursiveSearch(List<Boolean> list, boolean value, int i) {

        if(i == 0) {

            return list.indexOf(value);

        } else {

            return list.subList(0, list.indexOf(value) + 1).size() + recursiveSearch(list.subList(list.indexOf(value) + 1, list.size()), value, i - 1);

        }

    }


查看完整回答
反對 回復(fù) 2023-06-28
  • 3 回答
  • 0 關(guān)注
  • 236 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號