对一条语句输出回文值的补充
来源:互联网 发布:苏州php开发 编辑:程序博客网 时间:2024/05/16 18:12
之前发过一篇博客,写的是关于一条语句输出回文值,在发那篇博客的时候并没有看懂那条语句的执行过程,现在补充道这里。
原来那篇博客的地址是:http://blog.csdn.net/jianzhibeihang/archive/2009/12/06/4952037.aspx
今天特定在c版发了贴问了下,发现了很多好的回帖。版里的大牛还是很多啊!
原帖地址为:http://topic.csdn.net/u/20091209/10/d7cc1cc3-3eff-43d2-8096-c66a78996b3d.html#replyachor
首先解释下,这条语句的执行过程,以p(1,3)为例:
printf语句返回输出的字符个数,由于有/n,所以printf执行始终为真
第一层:p(1,3):printf执行为真 输出:1
3>1执行为真 接下来会执行p(2,3)或p(1,1)
p(2,3) 或者 p(1,1)
第二层:p(2,3):printf执行为真 输出:2
3>2执行为真 接下来会执行p(3,3)或p(2,2)
p(3,3)或者p(2,2)
第三层:p(3,3):printf执行为真 输出:3
3>3执行为假 p(3,3)执行为假,返回到第二层执行p(2,2)
因为对于||操作符,||操作左边的表达式为假
则执行右边的表达式,所以执行p(2,2)
返回到第二层p(2,2):printf执行为真 输出:2
2>2为假 p(2,2)执行为假,那么整个p(2,3)的执行就为
假,所以对于第一层p(2,3)||p(1,1),||表达
式左边为假,则执行||右边的表达式,即p(1,1)
返回到第一层p(1,1):printf执行为真 输出:1
1>1执行为假
最终p函数返回FALSE,执行结束.
下面是对return一句的转化:
int p(int i, int N){ printf("%d/n", i); if (N>i) { if (p(i+1,N)==0) return p(i,i); else return 1; } else return 0;}
- 对一条语句输出回文值的补充
- 一条语句输出回文值....经典
- 一条语句输出回文值....经典
- 只能用一条语句输出
- 对一条创建表的 T-SQL 语句的解读
- 一条语句交换两个元素的值
- 一条晕的语句
- 一条语句的问题:
- thinkphp输出最后一条sql语句
- 回文语句的判断
- 对MPlayer的补充
- 对web的补充
- 一条SQL语句的设计
- 一条精辟的SQL语句
- 一条模糊查询的语句
- 一条语句引发的血案
- 一条分页查询的语句
- sp_change_users_login 一条有用的语句
- 试用Windows Live Writer的插件功能
- sql利用rownum求相邻记录差值
- Setimer和Ontimer的使用(转)
- XPath 实例
- 统计访问量
- 对一条语句输出回文值的补充
- XPath 语法
- 使用@Autowired注解
- 认识和选用常用的几种 GPRS 模块
- Stooge排序算法
- Linux内核设备模型(7)
- Oracle中如何用一条SQL快速生成10万条测试数据
- C/C++中回调函数初探 (转)
- Ultral Edit SN