回 帖 发 新 帖 刷新版面

主题:[讨论]请教高手

#include <stdafx.h>
void main()
{   int w=5;
    void fun(int);
fun(w);

}
  void fun(int k)
  {  if (k>0)  fun(k-1);
     printf("%d  ",k);

  }

这个程序的输出结果为什么是0 1 2 3 4 5 而不是5 4 3 2 1 0呢?为什么呢?

回复列表 (共2个回复)

沙发

程序运用的是递归的思想,你的fun()函数先递减到fun(0),然后找到递归出口(不满足k>0)执行输出语句,输出0,返回上一层调用fun(1),输出1,以此类推即可。

板凳

你的fun函数一直被递归调用,直到k=0时,才输出因此最先输出0,依次是1,2,3,4,5。如果把printf("%d",k)放在if前面就会输出5,4,3,2,1

我来回复

您尚未登录,请登录后再回复。点此登录或注册