| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2058 人关注过本帖
标题:如何学习好c语言?
只看楼主 加入收藏
XQwindow
Rank: 2
等 级:论坛游民
帖 子:121
专家分:64
注 册:2013-1-1
收藏
得分:0 
回复 10楼 TonyDeng
额额,就懂那些而已。。

我不知道我能否当程序员,但我依然热爱编程!
2013-01-26 23:55
乾坤洞主
Rank: 3Rank: 3
来 自:乾坤洞
等 级:论坛游侠
帖 子:93
专家分:103
注 册:2012-7-18
收藏
得分:0 
回复 9楼 XQwindow
那我现在有c和c++的语法基础,要如何学习!学数据结构和算法么?

和尚我爱四处游,疯疯癫癫有理由    
开开心心是正道,愁愁烦烦不应该
2013-01-27 11:10
XQwindow
Rank: 2
等 级:论坛游民
帖 子:121
专家分:64
注 册:2013-1-1
收藏
得分:0 
回复 12楼 乾坤洞主
这个得问那些版主,那些才是牛人呢。。
不过算法和数据结构应该是必修课吧 ,好像大学计算机专业是

我不知道我能否当程序员,但我依然热爱编程!
2013-01-27 13:05
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
递归是怎么工作的都没搞清楚,就说学完语法基础了。

授人以渔,不授人以鱼。
2013-01-27 13:39
乾坤洞主
Rank: 3Rank: 3
来 自:乾坤洞
等 级:论坛游侠
帖 子:93
专家分:103
注 册:2012-7-18
收藏
得分:0 
回复 14楼 TonyDeng
有点晕!

和尚我爱四处游,疯疯癫癫有理由    
开开心心是正道,愁愁烦烦不应该
2013-01-27 14:07
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
递归利用了函数调用自身的能力。函数(也可称为程序)调用自身,本质上就是留尾巴,搁置手中的工作,重新再做一次同样的事情。由于程序实际上没有从正常出口结束,所以它铺开的摊子还在,而要重复同样的事情,就等于另寻地方把摊子再铺开,同时要记住当前的摊子在哪里,假如不断地这样铺开的话,同时也得记住顺序,以便原路返回——这种展开再返回的动作就是所谓的“栈数据结构”机制。

观察自我调用的函数,你只要记住,函数并没有结束,它只是往高处加盖了一层楼,假如这种加盖动作有尽头,那么它就会从原路一直拆楼返回来,否则就是死机(死循环)。函数自身(楼层面积和结构)越大越复杂,这种递归所占用的资源就越多,速度也越慢。

知道这种工作原理,是用不着去上过数据结构课程才了解的,不明白这种工作原理,学完了数据结构也同样不知是怎么回事,连这种东西在应用上有什么避忌都不知道。

授人以渔,不授人以鱼。
2013-01-27 14:22
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
这种东西没什么难的,调用自身、递归这种语法,基本上所有语言都支持,不是只有C/C++才有的。换言之,数据结构和算法,本来就是抽象的东西,虽然学界多用C语言来描述,但不等于非要用C语言来实现不可(事实上早期的程序设计算法描述语言是Pascal,后来时髦用C罢了),任何语言都能实现,否则它们就不是抽象的了。明白了那些原理,根本就不需要很在乎那些具体的细节,那是语言自己会处理的,我们所要学的,是如何运用当前的语言来实现同样的数据结构和算法,只有知道原理,才知道具体用起来要注意什么、如何去做,学数据结构和算法的目的是在这里。根本上,在现在的编程环境中,大多数常用的数据结构和算法都已经提供了标准库,不用自己写的。把大量的时间花在那种无用的地方,是浪费自己的时间。

C的运算符,有三十多种,是所有编程语言中最多最复杂的,之所以多用C来描述数据结构和算法,是因为它用这些特有的算符来书写,显得很简洁,但问题其实也正在这里,并非所有编程语言都会支持这么多的算符,如果你的编程严重依赖C语法,就等于无法把本来是抽象的数据结构和算法应用到别的语言中,才会有动辄非要用C来实现不可的想法,那害的其实就是你自己,迁移能力低下!

授人以渔,不授人以鱼。
2013-01-27 14:40
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
学C作入门,本来的用意不过是让你了解一下编程的基本概念,重点在普遍适用的知识上,但太多的初学者把特性当重点和屠龙术,埋头专攻只有C才有的语法和知识,这是最大的误区。没有一个人研究程序该如何分解功能和函数、组织模块和数据封装的,来来去去就纠缠在什么i++、位运算、指针寻址、printf/scanf的格式符之类东西上。

授人以渔,不授人以鱼。
2013-01-27 14:50
乾坤洞主
Rank: 3Rank: 3
来 自:乾坤洞
等 级:论坛游侠
帖 子:93
专家分:103
注 册:2012-7-18
收藏
得分:0 
回复 16楼 TonyDeng
可是这种递归感觉还是特别抽象, else
     {
     fun(n-1,&f1);     fun(n-2,&f2);
     *s=f1+f2;
     }
就算不是指针的,只要两次或两次以上调用本身就晕了!!!

和尚我爱四处游,疯疯癫癫有理由    
开开心心是正道,愁愁烦烦不应该
2013-01-27 16:52
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
那是编码者力图直接模仿数学表达式而使用递归,那个数列规律,就是当前项是前两项之和,所以他要算当前项n,就先搁置自己,去算前面两项n-1和n-2,如此一直往前算,算到数列最开始给出的已知数为止,然后一路逆着把各项补算出来,这样就求出了第n项。

授人以渔,不授人以鱼。
2013-01-27 20:38
快速回复:如何学习好c语言?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030169 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved