You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

理解C语言递归输出:按值传参funky函数执行结果问询

问题解答

问题1:代码运行后的打印输出

你给出的是老式K&R风格C代码,遵循旧C标准的规则:未显式声明类型的函数参数、函数返回值默认是int类型,因此x的类型可以确定为int,不存在类型不确定的问题。

该函数为按值传参的递归函数,每次调用的x都是独立副本,执行逻辑推导如下:

  • 顶层调用funky(5),x初始为5,满足x>0,x自减为4,调用funky(4),等待递归返回后再执行打印
  • funky(4)中x初始为4,满足x>0,x自减为3,调用funky(3),等待递归返回后再执行打印
  • funky(3)中x初始为3,满足x>0,x自减为2,调用funky(2),等待递归返回后再执行打印
  • funky(2)中x初始为2,满足x>0,x自减为1,调用funky(1),等待递归返回后再执行打印
  • funky(1)中x初始为1,满足x>0,x自减为0,调用funky(0),等待递归返回后再执行打印
  • funky(0)中x初始为0,不满足判断条件,直接执行打印,输出0,后返回上层
  • 回到funky(1)的递归调用后,执行打印,输出当前x值0,后返回上层
  • 回到funky(2)的递归调用后,执行打印,输出当前x值1,后返回上层
  • 回到funky(3)的递归调用后,执行打印,输出当前x值2,后返回上层
  • 回到funky(4)的递归调用后,执行打印,输出当前x值3,后返回上层
  • 回到funky(5)的递归调用后,执行打印,输出当前x值4,后结束

最终输出结果为:0,0,1,2,3,4,

问题2:相关逻辑疑问解答

  • 不是tester的相关值传入顶层funky:tester函数中是直接把常量5作为参数传递给顶层funky,和tester本身的返回值、内部其他变量没有关联。
  • 不可能仅打印4:因为函数是递归实现,会先逐层调用进入最内层,再逐层返回执行每层的打印逻辑,会输出所有递归层级的x值,不会只打印4。

内容的提问来源于stack exchange,提问作者Umbral Chaos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 06:36:07