holoyh
2021-08-19 22:58
采纳率: 100%
浏览 49

递归函数没有return语句 为什么会返回i?不应该返回随机数吗

如下图:
img
运行结果:6
这段代码的函数fc中,每个if、else if、else分支内都有 return i; 因此函数的返回值是i,我是可以理解的。结果是6,我也是理解的。

但下面这段代码(去掉了else if 和 else分支中的return i 语句), 为什么结果还是6而不是随机数呢?(书上说没return 函数的返回值会是随机数)
img

img

将代码奉上:

#include <stdio.h> 

int i=1;

int fc(int n) 
{
    if(n==1)
        return i;
    else if(n%2==0)
    {
        fc(n/2);    
        i++; 
//        return i; 
    } 
    else
    {
        fc(3*n+1);
        i++;
//        return i; 
    }
}
    
void main() 
{
    int n,step;
    n=5;
    step=fc(n);
    printf("%d",step);
}

5条回答 默认 最新

相关推荐 更多相似问题