0

これら2つの違いは何ですか。

int find_set ( int v ) 
{
    if ( v == parent [ v ] )
        return v ;
    return parent [ v ] = find_set ( parent [ v ] ) ;
}

と:

int find_set ( int v ) 
{
    if ( v == parent [ v ] )
        return v ;
    parent [ v ] = find_set ( parent [ v ] ) ;
}
4

1 に答える 1

4

@Omriで述べられているように、違いは、ifステートメントが実行されない場合、2番目は戻り値がないため、戻り値のないコードパスのコンパイラエラーが(うまくいけば)残ることです。Rubyのような言語とは異なり、C++メソッドまたは関数の最後のステートメントは暗黙的に戻り値ではありません。

于 2012-12-27T23:23:15.180 に答える