不懂的代码要先背下来吗?

简介: 【学生提问】   老师对于有些程序设计的代码写法,不理解的时候,我是不是应该先背下来,或者做个记录,以后要用的时候,再参考,还是用什么方式彻底弄懂?这个对于算法的理解,有什么提高的方法和步骤吗?【答复】   首先,我不赞成在不理解的情况下强记的方法。不理解先强记,对于某些少数的人文类知识,如诗词,是可以的,因为那些内容,一字不差是基本要求。各学科都有其内在逻辑,对绝大

【学生提问】
  老师对于有些程序设计的代码写法,不理解的时候,我是不是应该先背下来,或者做个记录,以后要用的时候,再参考,还是用什么方式彻底弄懂?这个对于算法的理解,有什么提高的方法和步骤吗?

【答复】
  首先,我不赞成在不理解的情况下强记的方法。不理解先强记,对于某些少数的人文类知识,如诗词,是可以的,因为那些内容,一字不差是基本要求。各学科都有其内在逻辑,对绝大多数知识,要设法将自己已有知识与新学的知识联系起来,这可以是到达理解程度的中间状态,这样就可以不记而记了。对于程序和算法而言,掌握其思想,懂得其技术,写法可以有很多,先背下来,可能就坏事了。
  其次,如何处理这件事?建议几个策略,我以你正在学的递归为例说明:(1)补差法:现在学不懂递归,根源可能还是你对函数机制的理解不到位,形参和实参的结合、函数返回的值以及返回的点等等,只要有一个地方模糊,到递归时,就会成为障碍,你可以借着学递归,找出与之相关的前面的知识点,把未曾觉察的短板补上来;(2)外围突破法:看某一本书没懂,某一个视频没看懂,可能是这些材料与你的思维没有搭上线,你可以再找一些材料,可以在网上找,可以翻其他书,别的材料里的例子、讲法,可能让你一下子就打通了自己未能发现的关键障碍,做到了理解;(3)暂时搁置法:学习是个长期的过程,别指望所有的内容过一遍就全打通,如果这个知识点太困难了,又不是马上急着要用上(急着要用的可以先照猫画虎),就可以先放一放(不是放弃了),以后,一是记着往前走一段时间后再回来看(一年级的没全懂,二年级回来再看,发现容易了),二是在用着时立刻回来看(这是用补差法解决后续的知识点顺带解决遗留问题),这时是带着要解决的问题来学,自然效果就好了。
  总结一下,学习的困难源于知识的联系不够、知识点间的逻辑不明,死盯一点,用单一方式突破,有困难正常。用较长的周期、用多种材料、多种方式突破,而不是在形式层面背会,这是解决困难的思路。

目录
相关文章
|
存储 算法 C++
C/C++工程师面试题(STL篇)
C/C++工程师面试题(STL篇)
276 6
|
C++
基于Qt的简易音乐播放器设计与实现
基于Qt的简易音乐播放器设计与实现
585 0
|
Java Apache
JAVA文件的MD5获取方法
JAVA文件的MD5获取方法
1080 0
|
安全 编译器 开发者
【Qt 学习笔记】Qt信号和槽的其他说明及Lambda表达式
【Qt 学习笔记】Qt信号和槽的其他说明及Lambda表达式
573 0
|
7月前
|
安全 Linux 编译器
BigCloud Enterprise Linux 8和Rocky Linux 8升级OpenSSH步骤
本文介绍了在BigCloud Enterprise Linux 8.2/8.6和Rocky Linux 8.10上升级OpenSSH的详细步骤。首先配置Telnet服务和GCC编译器以确保远程登录安全,接着备份旧版OpenSSH并下载、编译、安装最新版本(如9.9p1)。然后创建新的sshd系统服务配置文件,调整配置并启动服务。最后验证升级效果,关闭不必要的Telnet服务,并处理可能的防火墙和SELinux问题。通过这些步骤可有效修复低版本OpenSSH带来的高危漏洞。
369 13
|
11月前
|
机器学习/深度学习 运维 监控
基于特征子空间的高维异常检测:一种高效且可解释的方法
本文探讨了一种替代传统单一检测器的方法,通过构建多个专注于特征子集(子空间)的检测器系统,来提高异常检测的准确性和效率。文章详细介绍了子空间方法在处理高维数据时的优势,包括缓解维度灾难、提高异常检测的可解释性和计算效率。同时,文中还讨论了子空间的选择策略,如基于领域知识、相关性、随机选择等,并介绍了PyOD工具包中实现子空间异常检测的具体方法。通过这些技术,异常检测系统能够更有效地识别数据中的异常记录,尤其是在特征数量众多的情况下。
301 9
基于特征子空间的高维异常检测:一种高效且可解释的方法
|
11月前
|
监控 Java 编译器
Java虚拟机调优实战指南####
本文深入探讨了Java虚拟机(JVM)的调优策略,旨在帮助开发者和系统管理员通过具体、实用的技巧提升Java应用的性能与稳定性。不同于传统摘要的概括性描述,本文摘要将直接列出五大核心调优要点,为读者提供快速预览: 1. **初始堆内存设置**:合理配置-Xms和-Xmx参数,避免频繁的内存分配与回收。 2. **垃圾收集器选择**:根据应用特性选择合适的GC策略,如G1 GC、ZGC等。 3. **线程优化**:调整线程栈大小及并发线程数,平衡资源利用率与响应速度。 4. **JIT编译器优化**:利用-XX:CompileThreshold等参数优化即时编译性能。 5. **监控与诊断工
|
搜索推荐
【qt】自定义界面类
【qt】自定义界面类
199 0
|
存储 算法 Java
QT中的线程池的介绍和使用
QT中的线程池的介绍和使用
384 0
|
存储 设计模式 算法
【C++ 并发 线程池设计】深入理解C++线程池:设计、实现与应用
【C++ 并发 线程池设计】深入理解C++线程池:设计、实现与应用
950 0