递归困境

时间:2012-12-27 23:15:57

标签: c++ recursion

这两者之间的区别是什么。

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 ] ) ;
}

1 个答案:

答案 0 :(得分:4)

如@Omri所述,差异在于,如果if语句没有执行,则第二个没有返回,为(没有返回值)的代码路径留下(希望)编译器错误。与Ruby之类的语言不同,C ++方法或函数的最后一个语句不是隐式返回值。