永发信息网

解释一下这个小程序

答案:1  悬赏:70  手机版
解决时间 2021-07-31 05:07
  • 提问者网友:嘚啵嘚啵
  • 2021-07-30 15:36

#include <iostream>
using namespace std;

#define PRINT(i) (cout<<i<<endl)

int func(int i, int N)
{
return (PRINT(i) && i<N && func(i+1, N)) || !PRINT(i);
}

int main(void)
{
func(1,10);
return EXIT_SUCCESS;
}

输出结果是从1到10,再从10到1

最佳答案
  • 五星知识达人网友:封刀令
  • 2021-07-30 16:27
#include <iostream>//标准输入输出流using namespace std;#define PRINT(i) (cout<<i<<endl)//定义输出宏int func(int i, int N)//这是一个递归函数。{return (PRINT(i) && i<N && func(i+1, N)) || !PRINT(i);}int main(void){func(1,10);return EXIT_SUCCESS;}
现在解释下这个程序的运行过程:先调用函数。func(1,10);
返回(PRINT(i) && i<N && func(i+1, N)) || !PRINT(i)
从左到右。先是PRINT(i),打印出1,且表达式为真,继续判断,i<N,1<10,真,继续,func(i+1, N)
即调用func(2,10);
返回(PRINT(i) && i<N && func(i+1, N)) || !PRINT(i)
从左到右。先是PRINT(i),打印出1,且表达式为真,继续判断,i<N,1<10,真,继续,func(i+1, N)
即调用func(3,10);……
一直到调用func(10,10);
从左到右。先是PRINT(i),打印出10,且表达式为真,继续判断,i<N,10不<10,假,执行!PRINT(i),
输出10,且func(10,10);返回0;
接下来。func(9,10);的!PRINT(i);开始执行,输出9,且func(9,10);返回0;
……
直到执行func(1,10);的!PRINT(i);,输出1.
程序结束。。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯