题目:
函数int func(int i,int N);
其中i<=N,功能输出i递增到N再递减到i的整数,每行输出一个数。
要求:
1、只能有一个语句,即一个分号。
2、不能使用do while until goto for if 关键字,不能使用?:和逗号运算符。
3、唯一能使用的库函数为printf。
#include <iostream>
#include <algorithm>
using namespace std;
int func(int i, int n)
{
return (i == n && printf("%d\n", i)) || (printf("%d\n", i) && func(i + 1, n) && printf("%d\n", i));
}
int main()
{
func(1, 5);
return 0;
}
这个代码处理的非常巧妙,退出递归的情况竟然是短路原理。
printf返回的是打印的个数。