注册 登录
编程论坛 C++教室

大家来看看 这该怎么解释

Y08M09D26 发布于 2008-10-31 14:36, 850 次点击
int  func(int i,int n)
{
    return (i<n && printf("%d\n",i)) && !func(i+1,n)
            || printf("%d\n",i);
}
这函数怎么来解释?
6 回复
#2
lockhawk2008-10-31 18:46
返回的是一个关系表达式,结果是1或0。应该用bool型才对?
#3
youhm2008-10-31 19:14
呵呵,楼主从哪儿搞来的,是不是VBGOOD,这个是递归输出数字从i到n再到i
#4
ling1212112008-10-31 23:45
你这里的func()函数的返回值用int没问题。
函数的工作如下:
当i= 1时,先执行i<n;成立则输出i;然后去调用!func(i+1,n),同样先判断i<n是否成立,成立则输出i+1;
然后去调用!func(i+1,n),不停的递归调用。
当i=8时,先执行i<n;成立则输出i;然后去调用!func(i+1,n);此事!func(9,9),i<n不成立,故执行||后面的printf语句。然后返回到当i=8时栈空间,去执行||后面的printf()语句。
#5
Y08M09D262008-11-03 17:12
原来是这回事 啊
谢谢各位啦
#6
sunkaidong2008-11-03 20:20
这是个递归程序..前半句是递推后半句是回归..应该注意到这个表达式在什么时候返回的都是1
(i<n && printf("%d\n",i)) && !func(i+1,n)
            || printf("%d\n",i);
只有都是1的时候才会执行||后面这个打印..
#7
SuperPanda2008-11-03 22:24
你先搞清楚&/ !的优先级应该就可以了吧
1