趣味题

在某神牛的群里面看见的:

趣味题:编写原型为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关键字。

于是我想出了一个i不管用的方法

int foo(int i,int n)
{
  return (i<2*n?printf("%d ",(i<n?i:2*n-i))+foo(i+1,n):0);
}

但是这个肯定不是真正的答案,

于是小虾实现了一个方法, http://xiaoxia.org/?p=4427

iceboy公布了答案 return i < n && foo(i, i) && foo(i + 1, n), printf(“%d “, i); 但是很难明白。

发表评论?

3 条评论。

  1. Mine is:
    return i==n && printf(“%d “, i) || (foo(i, i), i<n && foo(i+1, n), foo(i, i));

    是不是觉得我的最容易理解? 哈哈哈哈!!!

发表评论

注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)

Trackbacks and Pingbacks:

本文链接:https://twd2.me/archives/1126QrCode