簡體   English   中英

無法將數組傳遞給遞歸函數C ++

[英]Having trouble passing array to recursive function c++

當我在內部運行函數“ check_row”時,嘗試傳遞數組“ sudoku_temp”的方式存在問題,但是我不確定自己做錯了什么。 我想念什么嗎?

int check_row(int j_position, int generated_value, int sudoku_temp[][9]){
for (int i_position = 0; i_position < 9; i_position++)
{
    if (generated_value == sudoku_temp[i_position][j_position])
    {
        generated_value = generate_number();
        check_row(j_position, generated_value, sudoku_temp[][j_position]);
    }
    else
        return generated_value;

}

}

要澄清的是,問題是當我嘗試調用自身內部的函數時。 謝謝。

使用變量而不是固定長度(如9),因為遞歸中的參數可能不同。

int check_row(int j_position, int generated_value, int sudoku_temp[][n])
{
    for (int i_position = 0; i_position < n; i_position++)
    {
        if (generated_value == sudoku_temp[i_position][j_position])
        {
            generated_value = generate_number();
            check_row(j_position, generated_value, sudoku_temp[][j_position]);
        }
        else
            return generated_value;

    }
}

當您要從數組中提取一個值時,您不能像您一樣留空括號。 另一方面,函數原型看起來很相似,而且很好。 為什么?

int sudoku_temp[][9] // A 2D array of integers second dimension of which is of size 9

或者換句話說,是一個大小為9的數組(大小未知)。我們沒有告訴編譯器數組的實際大小,在這種情況下我們不必這樣做,因為它只是作為參數提供給我們的。

另一方面,在訪問元素時,由於簡單的原因,我們不能留空括號:我們要訪問元素,並且編譯器必須知道哪個元素。 順其自然-刪除空的[]應該可以解決您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM