这段代码给出了一个荒谬的答案

Gho*_*ing -3 c recursion function

可能重复:
此代码中发生了什么?

我有一个包含递归函数的代码.我在递归上浪费了很多时间,但我仍然无法得到它,真的:

#include<stdio.h>

count(int);

 main(){
   int x=10,z;
   z=count(x);
}  
count(int m){
   if(m>0)
      return count(m-1);
}
Run Code Online (Sandbox Code Playgroud)

count第一次使用参数调用时10,它满足条件并且递归开始.当函数调用自身时会发生什么?我不懂.该陈述return count(m-1)是什么意思?它在哪里转移控制?

md5*_*md5 5

函数的返回值count是未定义的,因为如果(m <= 0)为true 则没有默认返回值.

C11,§6.9.1函数定义

如果}终止了函数,并且调用者使用了函数调用的值,则行为是未定义的.

此外,要了解递归函数的工作原理,您必须自己动手执行代码(另请参见此处).