C语言趣味题一

Written by

in

某群看到:

趣味题:
编写原型为int foo(int i, int n)的c函数,实现打印i,i+1,…,n-1,n,n-1,…,i+1,i的序列。要求函数内只能有一条语句,只能有一个分号,只能有一个printf,并且只能用这个printf输出。不允许使用if、else、do、for、while、goto关键字。

鉴于本人是蒟蒻,因此没有写出来,下面综合一下众神牛的答案:
小虾:
[cpp]
int foo(int i, int n) {
    return i==n ? printf(“%d “, i) : (foo(i, i), i<n ? foo(i+1, n) : 0, foo(i, i));
}
[/cpp]
22:
[cpp]
int foo(int i,int n) {
    return (i < 2 * n ? printf(“%d “, (i < n ? i : 2 * n – i)) + foo(i + 1, n) : 0);
}
[/cpp]
兔子:
[cpp]
void foo(int i, int n) {
//不用返回值都可以做;
    printf(“%d “, i == n ? i : (foo(i, i), foo(i + 1, n), i));
}
[/cpp]
yeah:
[cpp]
int foo(int i, int n) {
    return printf(“%d “, i), i<n ? foo(i+1, n), foo(i, i) : 0 ;
}
[/cpp]
最后是ib的:
[cpp]
int foo(int i, int n) {
    return i < n && foo(i, i) && foo(i + 1, n), printf(“%d “, i);
}
[/cpp]

转载了以下文章中的部分内容:
一道C语言趣味题 Xiaoxia[PG]
趣味题 twd2

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *