接收C中的函数调用

Rav*_*rdi -1 c recursion function-call

为什么这个递归函数落入无限循环?它显示Val的价值没有下降.背后的逻辑是什么?

int Bar(int Val) // value passed is 3
{
    int x=0;
    while (Val>0)
    {
        x=x+Bar(val-1);
    }
    return Val
}
Run Code Online (Sandbox Code Playgroud)

lin*_*fan 5

它不是递归,而是永不停止的while循环.

while (val>0) {  
  x=x+bar(val-1);
}
Run Code Online (Sandbox Code Playgroud)

在这个循环中,你永远不会改变它的值val.所以循环永远不会终止.