程序流程你真的懂了吗?
2015-08-23 11:22
169 查看
小白最近在学习javaSE课程,参见的当然老马的视频了,看补充的递归视频某一节,马士兵让学生画出程序执行的流程图。因为自己前期有学习C基础,所以觉得流程图简单啊,遂没有动手去画,可是后来才发现自己并不是真的懂流程控制。
/*
2015年8月23日10:09:26
递归调用举例:Fibonacci数列
*/
public class Fab
{
public static void main(String [] args)
{
System.out.println(f(5));
}
public static int f(int n)
{
if (n == 1 || n == 2)
{
return 1;
}
else
return f(n-1) + f(n-2);
}
}
先啰嗦的解释下这个流程控制,然后附图,最后总结自己不足。
解释:这段代码的类名叫Fab,其中有一个启动类main方法,调用f()方法并且返回f(5)的值,然后打印出来。具体到f()方法是:如果n等于1或者2,就返回1,否则返回f(n-1) + f(n-2).因为f(5)中n=5,所以返回f(4)+f(3),重点来了,此刻先处理且只处理f(4),f(4)又继续f(3)+f(2),重点又来了,此刻先处理且只处理f(3),f(3)返回的是f(2)+f(1),好了。f(2)中n=2,返回值是1,此刻才开始处理f(1),返回的也是1,f(3)的值是f(2)+f(1)=2,然后才返回f(3)的值,f(3)返回后开始计算f(4)=
f(3)+f(2)中的f(2),当然等于1,所以f(4)=3;继续计算f(5)=f(4)+f(3)中的f(3)了,调用f(3)=f(2)+f(1),得到f(3)=2,到此,f(5)的值算出来了,等于f(4)+f(3)=3+2=5.最后就是把f(5)的值返回给main函数,打印出答案等于5.至此程序运行结束。ps:上述写的有点啰嗦,可能看的有点吃力,老马ppt的图是很给力的。
附图:见后面
总结:有些事情,总觉得自己会了,可是真做起来,又是另一码事了。想起我们合肥十中高中数学老师的一句话:知道和懂之间 差 10万8千里 ,懂和会做之间 差 10万8千里,会做和做出来之间 差 10万8千里, 做出来和做对之间 差 10万8千里。告诫自己以后做事还要步步为营,踏踏实实才是!
/*
2015年8月23日10:09:26
递归调用举例:Fibonacci数列
*/
public class Fab
{
public static void main(String [] args)
{
System.out.println(f(5));
}
public static int f(int n)
{
if (n == 1 || n == 2)
{
return 1;
}
else
return f(n-1) + f(n-2);
}
}
先啰嗦的解释下这个流程控制,然后附图,最后总结自己不足。
解释:这段代码的类名叫Fab,其中有一个启动类main方法,调用f()方法并且返回f(5)的值,然后打印出来。具体到f()方法是:如果n等于1或者2,就返回1,否则返回f(n-1) + f(n-2).因为f(5)中n=5,所以返回f(4)+f(3),重点来了,此刻先处理且只处理f(4),f(4)又继续f(3)+f(2),重点又来了,此刻先处理且只处理f(3),f(3)返回的是f(2)+f(1),好了。f(2)中n=2,返回值是1,此刻才开始处理f(1),返回的也是1,f(3)的值是f(2)+f(1)=2,然后才返回f(3)的值,f(3)返回后开始计算f(4)=
f(3)+f(2)中的f(2),当然等于1,所以f(4)=3;继续计算f(5)=f(4)+f(3)中的f(3)了,调用f(3)=f(2)+f(1),得到f(3)=2,到此,f(5)的值算出来了,等于f(4)+f(3)=3+2=5.最后就是把f(5)的值返回给main函数,打印出答案等于5.至此程序运行结束。ps:上述写的有点啰嗦,可能看的有点吃力,老马ppt的图是很给力的。
附图:见后面
总结:有些事情,总觉得自己会了,可是真做起来,又是另一码事了。想起我们合肥十中高中数学老师的一句话:知道和懂之间 差 10万8千里 ,懂和会做之间 差 10万8千里,会做和做出来之间 差 10万8千里, 做出来和做对之间 差 10万8千里。告诫自己以后做事还要步步为营,踏踏实实才是!
相关文章推荐
- SonarQube代码质量管理平台安装与使用
- 20多岁,你只想要稳定高薪无压力
- Html+css+div+ul+li制作Web前端导航菜单。
- 极客公园(未来企业)活动感想
- 闭合浮动(清除浮动)
- PostgreSQL Replication之第十二章 与Postgres-XC一起工作(3)
- TCP
- 【读书有感】——《番茄工作法图》
- HDU1233 还是畅通工程(模版题(prim+kruskal)两种模版)
- PostgreSQL Replication之第十二章 与Postgres-XC一起工作(2)
- PostgreSQL Replication之第十二章 与Postgres-XC一起工作(1)
- eclipse使用技巧一
- tomcat 的理解
- selector背景选择器不同效果
- NPOI操作Excel 004:写入空Excel(增加保存提示框)
- Ansible 配置 & 简单应用
- Android SurfaceView vs TextureView
- SQL操作表数据_Insert操作
- pat(B) 1038. 统计同成绩学生(哈希)
- #317 (div.2) C. Lengthening Sticks