由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 有什么好办法可以帮助理解recursion
相关主题
树的前序遍历请教一个作用域的问题
求助一个数据结构的求时间复杂度问题[合集] 请问关于堆栈的问题
请教windows 7 怎么增加堆栈上限这个C++程序为什么不能运行
新手问,大家平时使用recursion么?感觉很酷啊急问大牛们:关于fortran堆栈溢出
reverse LL recursively[合集] 一道M$面试题的解法... (转载)
[合集] 问个递归的问题关于thread的stack
Python: What does this mean?问个关于数组的问题
recurvion真的很难懂~~heap&stack Linux vs. Windows
相关话题的讨论汇总
话题: recursion话题: 数学话题: 理解话题: preorder话题: 归纳法
进入Programming版参与讨论
1 (共1页)
m******n
发帖数: 453
1
阶乘,fibonacci数列这些入门的recursion很好理解
可是一到二叉树就懵,比如这个基本的
void preOrder(struct BinaryTreeNode *root){
if(root){
printf("%d", root->data);
preOrder(root->left);
preOrder(root->right);
}
}
从字面看,它就是把pseudo code翻译一下,简单直接明了
可是怎么就那么神奇,这就解决问题了?
因为用iteration的时候,我可以跟踪里面的Stack,知道数字是怎样进进出出那个
Stack
于是我理解了
可是在recursion的时候怎么就好像变magic一样
g****t
发帖数: 31659
2
把语义和underlaying计算分开?
语义很容易理解:
打印二叉树,等于打印头节点,然后打印剩下的两个子树。
这句汉语没问题吧?
理解计算,则需要弄清楚函数调用进出stack的法则。
stack frame用debug tool能看见。例如:
https://stackoverflow.com/questions/2770889/how-can-i-examine-the-stack-
frame-with-gdb

【在 m******n 的大作中提到】
: 阶乘,fibonacci数列这些入门的recursion很好理解
: 可是一到二叉树就懵,比如这个基本的
: void preOrder(struct BinaryTreeNode *root){
: if(root){
: printf("%d", root->data);
: preOrder(root->left);
: preOrder(root->right);
: }
: }
: 从字面看,它就是把pseudo code翻译一下,简单直接明了

l*******m
发帖数: 1096
3
编程和ML一样,要设计状态空间,程序的输入就是观测空间和状态空间,无论是树,DP
, RNN, RL。对于树,观测空间就是values, 状态空间就是撸过节点。你可以自己设计
数据结构管理状态空间,就是non-recursive的放法。也可以利用程序自带的机制,比
如recursion就是利用了call stack自动去管理状态空间
s*i
发帖数: 5025
4
Recursion 需要一个重要的心理建设:
你必须相信并且愿意把你的“大的”问题delegate给*同样*的但是“小一点”的问题那
边去。你要相信这些小的问题的结果。
比如 root->left,和root->right就是典型的*小一点*的同样问题。相信preOrder这个
function可以处理的很好,自然心理没有障碍了。
如果突破不了这个心理障碍,你总会琢磨者为啥preOrder(root->left)这个调度里面发
生了什么?结果对不对等一系列问题。

【在 m******n 的大作中提到】
: 阶乘,fibonacci数列这些入门的recursion很好理解
: 可是一到二叉树就懵,比如这个基本的
: void preOrder(struct BinaryTreeNode *root){
: if(root){
: printf("%d", root->data);
: preOrder(root->left);
: preOrder(root->right);
: }
: }
: 从字面看,它就是把pseudo code翻译一下,简单直接明了

g****t
发帖数: 31659
5
这个看法有道理。回到state space和observer什么的了。你自创的?


: 编程和ML一样,要设计状态空间,程序的输入就是观测空间和状态空间,无论是
树,DP

: , RNN, RL。对于树,观测空间就是values, 状态空间就是撸过节点。你可以自
己设计

: 数据结构管理状态空间,就是non-recursive的放法。也可以利用程序自带的机
制,比

: 如recursion就是利用了call stack自动去管理状态空间



【在 l*******m 的大作中提到】
: 编程和ML一样,要设计状态空间,程序的输入就是观测空间和状态空间,无论是树,DP
: , RNN, RL。对于树,观测空间就是values, 状态空间就是撸过节点。你可以自己设计
: 数据结构管理状态空间,就是non-recursive的放法。也可以利用程序自带的机制,比
: 如recursion就是利用了call stack自动去管理状态空间

m******r
发帖数: 1033
6
琢磨不明白递归,就是硬件不够,比如我老,呵呵。
不光我这么说, hci, 王东估计也这么说 。 话说这两位大师很久不出现了, 我老很
想念 。
b***i
发帖数: 3043
7
数学归纳法理解吗?

【在 m******n 的大作中提到】
: 阶乘,fibonacci数列这些入门的recursion很好理解
: 可是一到二叉树就懵,比如这个基本的
: void preOrder(struct BinaryTreeNode *root){
: if(root){
: printf("%d", root->data);
: preOrder(root->left);
: preOrder(root->right);
: }
: }
: 从字面看,它就是把pseudo code翻译一下,简单直接明了

m******r
发帖数: 1033
8
别扯数学,两码子事。 当然数学好的逻辑性强, 逻辑性强的写代码容易。
递归告诉你个trick, 你就把它死记硬背下来。递归这东西,看起来像魔术,但写起来
很短,很押韵,楼主问的问题,一共也才5行,贝都背不下来,也别谈理解了。
类似九九乘法表, 有什么可理解的。
l*******m
发帖数: 1096
9
是呀。记性不好了,只能在generalization加强。还有我建议面试ML candidates最好
考DP

:这个看法有道理。回到state space和observer什么的了。你自创的?
g****t
发帖数: 31659
10
我也是,离散数学题现在很难直接反应过来。有物理意义的容易些。

【在 l*******m 的大作中提到】
: 是呀。记性不好了,只能在generalization加强。还有我建议面试ML candidates最好
: 考DP
:
: :这个看法有道理。回到state space和observer什么的了。你自创的?
: :

相关主题
Python: What does this mean?[合集] 请问关于堆栈的问题
recurvion真的很难懂~~这个C++程序为什么不能运行
请教一个作用域的问题急问大牛们:关于fortran堆栈溢出
进入Programming版参与讨论
N*****r
发帖数: 94
11

递归就是反复调用自身直到最简case 直接有答案,每次调用时都保存一个状态空间,
然后再反过来从最简case 一步步还原每次的调用
说白了两个核心,大小过程逻辑必须一致, 必须退化到最简case
最大的问题是stack可能太小,保存不了太多层状态
tail recursion 反倒相对复杂一点点
这东西图书馆有本80年代的书,叫 recursion,很薄,讲的还可以
SICP 用scheme讲这个也不多,或者Scheme的书都不错
多做些题,习惯了这种思维就好了
说白了,还是 divide and conquer , 只不过每次 divide 之后 小问题跟大问题逻辑
相似,可以复用过程

【在 m******n 的大作中提到】
: 阶乘,fibonacci数列这些入门的recursion很好理解
: 可是一到二叉树就懵,比如这个基本的
: void preOrder(struct BinaryTreeNode *root){
: if(root){
: printf("%d", root->data);
: preOrder(root->left);
: preOrder(root->right);
: }
: }
: 从字面看,它就是把pseudo code翻译一下,简单直接明了

l*****c
发帖数: 1153
12
你”想多了”。recursion是思维模式,别多想,就想两步“直接”的变化规律。

【在 m******n 的大作中提到】
: 阶乘,fibonacci数列这些入门的recursion很好理解
: 可是一到二叉树就懵,比如这个基本的
: void preOrder(struct BinaryTreeNode *root){
: if(root){
: printf("%d", root->data);
: preOrder(root->left);
: preOrder(root->right);
: }
: }
: 从字面看,它就是把pseudo code翻译一下,简单直接明了

l*****c
发帖数: 1153
13
刚刚跟LD在说,中国的小学太功利,重视机械方法记忆。对数学归纳法这样的逻辑训练
基本就是一笔带过。数学是逻辑结构上的语言,从小不锻炼逻辑语言,长大处处碰壁。
我们家四岁前放鸽子,四岁开始集中训练逻辑,计算这种东西倒是不急,上学了再说。

【在 b***i 的大作中提到】
: 数学归纳法理解吗?
l*****c
发帖数: 1153
14
好典型,呵呵。

【在 m******r 的大作中提到】
: 别扯数学,两码子事。 当然数学好的逻辑性强, 逻辑性强的写代码容易。
: 递归告诉你个trick, 你就把它死记硬背下来。递归这东西,看起来像魔术,但写起来
: 很短,很押韵,楼主问的问题,一共也才5行,贝都背不下来,也别谈理解了。
: 类似九九乘法表, 有什么可理解的。

d***a
发帖数: 13752
15
二叉树遍历和Fibonacci在递归结构上接近,都是一个问题分成两个子问题,对堆栈的
使用也很相似。你把堆栈的变化用图的方式一步步画出来,就看的清楚了。
两者的差别是计算复杂度不同,二叉树遍历的每一次递归,子问题的规模缩小了一半。
但这个差别,不影响对程序执行正确性的理解。

【在 m******n 的大作中提到】
: 阶乘,fibonacci数列这些入门的recursion很好理解
: 可是一到二叉树就懵,比如这个基本的
: void preOrder(struct BinaryTreeNode *root){
: if(root){
: printf("%d", root->data);
: preOrder(root->left);
: preOrder(root->right);
: }
: }
: 从字面看,它就是把pseudo code翻译一下,简单直接明了

n******t
发帖数: 68
16
画一个简单的树。
然后用程序把每个节点走一遍, 每个节点分两个stack, 那就清楚了。
m******r
发帖数: 1033
17
琴棋书画,体育运动,学术学科,医生律师,说学逗唱,哪样不是机械性记忆在先,
创造性发挥在后? 能发挥出来的, 就成大师了; 发挥不出来,就是工程师,到FANG
拿大包裹,不香么。 机械记忆都不会的,连工程师都当不了, 可以当个大圣教使徒
善莫大焉。

【在 l*****c 的大作中提到】
: 好典型,呵呵。
b***i
发帖数: 3043
18
你是说,中国小学太重视机械方法,而没有逻辑训练,一笔带过,所以后来学数学归纳
法就学不会?我在一定程度上同意你的观察,中国文化和教育体系不讲究学习的过程,
而是把结果告诉你。比如我们在大学学矩阵的时候根本不知道是干什么用的,先学习一
些运算的规定。等到了后来学习物理深了才用到矩阵。
不过,即使学校用了更好的方法,有些人也是学不会的。我爸是普通高中数学老师,他
观察八九十年代的普通高中里理科生一半不懂数学归纳法(高二)。这些学生就是不相
信数学归纳法能真的证明那些定理/命题。而另一半觉得这是显然的,一点就通。我觉
得这可能是思维深度或者速度决定的。几乎所有人都会用视觉图像识别和语音识别来打
酱油,走路回家,但是上升到基于语音语言的抽象一些的逻辑思维体系,比如几何,代
数,很多人就不理解了,什么是未知数x,多项式乘法,对数运算。我们的大部分初中
同学后来上了技校职高就是这些抽象思维能力不够,根本无法理解代数。几万年人类的
竞争,大部分时间并不需要任何人理解数学归纳法,多项式乘法这些稍微深度的思维,
所以不懂的不会被淘汰,仍然存活下来,甚至可以生活得很好。
所以我认为,大量的人类(超过一半)是不懂数学归纳法的,也就没有能力理解这些稍
微深一些的思维。更深的更艰难的比如各种高等代数,甚至广义相对论,能懂的就更少
了,估计千分之一了。

【在 l*****c 的大作中提到】
: 刚刚跟LD在说,中国的小学太功利,重视机械方法记忆。对数学归纳法这样的逻辑训练
: 基本就是一笔带过。数学是逻辑结构上的语言,从小不锻炼逻辑语言,长大处处碰壁。
: 我们家四岁前放鸽子,四岁开始集中训练逻辑,计算这种东西倒是不急,上学了再说。

b***i
发帖数: 3043
19
看来你的方法或者认识有问题,我来告诉你为什么和数学归纳法有关
梵塔问题大家都知道就不说了,这是解决的函数:
move(int 1..N, int from, int to, int other) {
if (N == 1)
singleMove(1, from, to);
else {
move(1..N-1, from, other, to);
singleMove(N, from, to);
move(1..N-1, other, to, from);
}
}
利用数学归纳法,首先,N=1的时候,这个函数显然可以实现梵塔问题的解决。
下面假定如果N=k的时候,这个函数可以解决梵塔问题,那么,N=k+1的时候,你看看是
不是把上面的k个盘子移动到第三个塔,在把最下面的移动到第二个,在把第三个塔的k
个盘子移动到第二个,就解决了,也就证明了N=k+1的时候这个函数仍然可以解决梵塔
问题。这不就是数学归纳法嘛,是两码子是嘛?

【在 m******r 的大作中提到】
: 别扯数学,两码子事。 当然数学好的逻辑性强, 逻辑性强的写代码容易。
: 递归告诉你个trick, 你就把它死记硬背下来。递归这东西,看起来像魔术,但写起来
: 很短,很押韵,楼主问的问题,一共也才5行,贝都背不下来,也别谈理解了。
: 类似九九乘法表, 有什么可理解的。

l*****c
发帖数: 1153
20
是的。我不说中国的教育方法好还是不好,一种体系存在总有其合理性。中国的教育(
不仅是学校教育,也包括家庭和社会教育)侧重是机械性的部分,结论导向,教授以知
识和方法为核心,相对来说对逻辑,方法论体系不太重视。我经常说中国只引入的半个
科学,也就是科学知识,而科学方法论则没有被重视。知识是肉,方法论是骨架。这也
导致了中国能够培养大量的工程技术人员和产业工人,却缺乏前端科研。我在中国做过
几年的招聘工作,中国的硕士水平很高,博士除了清华中科院的一部分,其他的能达到
美国标准的凤毛麟角。这个不见的是坏事,这套体系在产业起步时候是有优势的。
回到你说的,我觉得你爸的观察是对的,这个有天生的差异,有些人可能确实不擅长抽
象思维。另一方面,我觉得是从出生到初中的阶段,学习中没有得到充分的思维训练,
思维模式已经被固化了也是一个很大因素,我相信否则可能这个比例关系会有变化。

【在 b***i 的大作中提到】
: 你是说,中国小学太重视机械方法,而没有逻辑训练,一笔带过,所以后来学数学归纳
: 法就学不会?我在一定程度上同意你的观察,中国文化和教育体系不讲究学习的过程,
: 而是把结果告诉你。比如我们在大学学矩阵的时候根本不知道是干什么用的,先学习一
: 些运算的规定。等到了后来学习物理深了才用到矩阵。
: 不过,即使学校用了更好的方法,有些人也是学不会的。我爸是普通高中数学老师,他
: 观察八九十年代的普通高中里理科生一半不懂数学归纳法(高二)。这些学生就是不相
: 信数学归纳法能真的证明那些定理/命题。而另一半觉得这是显然的,一点就通。我觉
: 得这可能是思维深度或者速度决定的。几乎所有人都会用视觉图像识别和语音识别来打
: 酱油,走路回家,但是上升到基于语音语言的抽象一些的逻辑思维体系,比如几何,代
: 数,很多人就不理解了,什么是未知数x,多项式乘法,对数运算。我们的大部分初中

相关主题
[合集] 一道M$面试题的解法... (转载)heap&stack Linux vs. Windows
关于thread的stack面试题:debug: 函数return to a wrong place
问个关于数组的问题丰田在嵌入式系统里用递归
进入Programming版参与讨论
p***o
发帖数: 1252
21
网上搜搜这篇文章:Separating Programming Sheep from Non-Programming Goats
2006年发出来,2014年撤回去,挺有意思。

【在 l*****c 的大作中提到】
: 是的。我不说中国的教育方法好还是不好,一种体系存在总有其合理性。中国的教育(
: 不仅是学校教育,也包括家庭和社会教育)侧重是机械性的部分,结论导向,教授以知
: 识和方法为核心,相对来说对逻辑,方法论体系不太重视。我经常说中国只引入的半个
: 科学,也就是科学知识,而科学方法论则没有被重视。知识是肉,方法论是骨架。这也
: 导致了中国能够培养大量的工程技术人员和产业工人,却缺乏前端科研。我在中国做过
: 几年的招聘工作,中国的硕士水平很高,博士除了清华中科院的一部分,其他的能达到
: 美国标准的凤毛麟角。这个不见的是坏事,这套体系在产业起步时候是有优势的。
: 回到你说的,我觉得你爸的观察是对的,这个有天生的差异,有些人可能确实不擅长抽
: 象思维。另一方面,我觉得是从出生到初中的阶段,学习中没有得到充分的思维训练,
: 思维模式已经被固化了也是一个很大因素,我相信否则可能这个比例关系会有变化。

l*****c
发帖数: 1153
22
我前面说他典型,到不是说不好。我就是说他的思路是典型的中国式思路,结果导向主
义,不需要卢纶或者理解。这个在应试教育的意义上是合理的。毕竟很多中国人被训练
的只能进行应试教育。这种情况下,也只能死记硬背了,毕竟开蒙老师可遇而不可求。

【在 b***i 的大作中提到】
: 看来你的方法或者认识有问题,我来告诉你为什么和数学归纳法有关
: 梵塔问题大家都知道就不说了,这是解决的函数:
: move(int 1..N, int from, int to, int other) {
: if (N == 1)
: singleMove(1, from, to);
: else {
: move(1..N-1, from, other, to);
: singleMove(N, from, to);
: move(1..N-1, other, to, from);
: }

N*****r
发帖数: 94
23

我觉得吧 其实主要是个人
当然了,国内的老师水平是差了点, 基础在那里, 高中大多师范院校毕业,大学里的
老师也未必好到哪里去,大多数讲课的时候自己都不明白
高中的东西 或者大一大二 数学物理课的东西,真的把核心讲出来很难的,说实话很多
美国正经名校的phd都未必能讲明白
所以不要要求太高了
还是得看个人努力, 多看大师的书
一辈子能碰上几个好老师太难了
比如最简单的, 微积分基本定理 牛顿莱布尼兹公式, 最差的水平只能告诉你就是这
么算,稍微牛点的告诉你为什么是互为矛盾,怎样从几何意义解释这个公式,牛人呢?
从对偶给你开始讲起,然后讲流形上的微积分,讲一般的外微分公式
。。。。。
几年跟人开玩笑时提到过,重积分换元公式的证明,可以说中国大学本科教的基本都是
错的, 但学生连为啥错了都不知道
当然了,正式的证明太难,全世界也没几个学校能在本科讲明白的,但 还是有的, 法
德俄都有学校有这水平
很多老师呢,能把书上的证明给你在黑板上完完整整抄下来都不容易了
我有幸碰上几个老师,再难的问题,再难的研究,他能一句话告诉你重点,剩下的就是
计算,体力活,受过训练谁都能干
到我教别人的时候,我也想这样, 发现这样教, 99%的人听不懂的
所以, 还是看人, 老师牛,学生也得牛

【在 l*****c 的大作中提到】
: 是的。我不说中国的教育方法好还是不好,一种体系存在总有其合理性。中国的教育(
: 不仅是学校教育,也包括家庭和社会教育)侧重是机械性的部分,结论导向,教授以知
: 识和方法为核心,相对来说对逻辑,方法论体系不太重视。我经常说中国只引入的半个
: 科学,也就是科学知识,而科学方法论则没有被重视。知识是肉,方法论是骨架。这也
: 导致了中国能够培养大量的工程技术人员和产业工人,却缺乏前端科研。我在中国做过
: 几年的招聘工作,中国的硕士水平很高,博士除了清华中科院的一部分,其他的能达到
: 美国标准的凤毛麟角。这个不见的是坏事,这套体系在产业起步时候是有优势的。
: 回到你说的,我觉得你爸的观察是对的,这个有天生的差异,有些人可能确实不擅长抽
: 象思维。另一方面,我觉得是从出生到初中的阶段,学习中没有得到充分的思维训练,
: 思维模式已经被固化了也是一个很大因素,我相信否则可能这个比例关系会有变化。

l*****c
发帖数: 1153
24
嗯。我刚才追加的一点就是。这种差异性很可能跟小时候成长过程中的教育模式强相关
。小时候的教育其实对人的知识积累帮助十分有限,倒是对思维模式,方法论和价值观
是决定性的。小时候过多侧重知识性结果导向,容易固化思维,影响长大后的学习能力

【在 p***o 的大作中提到】
: 网上搜搜这篇文章:Separating Programming Sheep from Non-Programming Goats
: 2006年发出来,2014年撤回去,挺有意思。

N*****r
发帖数: 94
25

说实话我没觉得应试教育有什么不对
应试教育是基础
做题都不会,是不会思考的
不做题的教学,只能教出来眼高手低的废物,比如我这样的,每次都离大课题差一步,
方向对,硬核啃不过去,然后被别人做了之后骂娘
主要是应付完考试,确定该做题了之后,要思考
不思考,那就是应试教育的废物

【在 l*****c 的大作中提到】
: 我前面说他典型,到不是说不好。我就是说他的思路是典型的中国式思路,结果导向主
: 义,不需要卢纶或者理解。这个在应试教育的意义上是合理的。毕竟很多中国人被训练
: 的只能进行应试教育。这种情况下,也只能死记硬背了,毕竟开蒙老师可遇而不可求。

l*****c
发帖数: 1153
26
看怎么定义应试教育了。考试本身不是坏东西。但是,教育纯粹为了在考试里面拿高分
就是问题了。举个具体的例子:国内现在的奥数教育,就是背题。看到这个题这么解,
看到那个这么解。更有甚就是新东方模式,找人偷真题,然后背答案。
我也开始也不理解为啥很多人觉得奥数不好,后来明白了,这个奥数早就不是以前的奥
数了。

【在 N*****r 的大作中提到】
:
: 说实话我没觉得应试教育有什么不对
: 应试教育是基础
: 做题都不会,是不会思考的
: 不做题的教学,只能教出来眼高手低的废物,比如我这样的,每次都离大课题差一步,
: 方向对,硬核啃不过去,然后被别人做了之后骂娘
: 主要是应付完考试,确定该做题了之后,要思考
: 不思考,那就是应试教育的废物

N*****r
发帖数: 94
27

考试本身没错
能背题能偷题那是 出题人有罪,监管人有罪,不是说考试制度错了
考试还是考察学习的最有效方法
国内不搞应试教育的下场,搞素质教育的结果,就是7岁的孩子用 crispr 改造基因治
疗癌症 还能发 sci
这个我觉得比背答案恶心多了,背答案好歹学了东西
作弊怎么都会有,不是考试制度的错

【在 l*****c 的大作中提到】
: 看怎么定义应试教育了。考试本身不是坏东西。但是,教育纯粹为了在考试里面拿高分
: 就是问题了。举个具体的例子:国内现在的奥数教育,就是背题。看到这个题这么解,
: 看到那个这么解。更有甚就是新东方模式,找人偷真题,然后背答案。
: 我也开始也不理解为啥很多人觉得奥数不好,后来明白了,这个奥数早就不是以前的奥
: 数了。

l*****c
发帖数: 1153
28
其实你的方法已经超越应试教育了。你所增加的考试后思考这一步,已经改变性质了。
几周前有个我以前的eng微信问我,怎么准备面试。要不要刷题。我跟他说,连我都刷
题,不过我只刷了大概二三十个题。主要是熟练一下coding,同时把思维模式总结一下
,发现有些类型生疏了就重新总结一下,那就够了。如果是背题,那就需要搞题海了。
题海,是低效的办法。就如同试图用穷举去取代归纳法。

【在 N*****r 的大作中提到】
:
: 考试本身没错
: 能背题能偷题那是 出题人有罪,监管人有罪,不是说考试制度错了
: 考试还是考察学习的最有效方法
: 国内不搞应试教育的下场,搞素质教育的结果,就是7岁的孩子用 crispr 改造基因治
: 疗癌症 还能发 sci
: 这个我觉得比背答案恶心多了,背答案好歹学了东西
: 作弊怎么都会有,不是考试制度的错

l*****c
发帖数: 1153
29
其实你的方法已经超越应试教育了。你所增加的考试后思考这一步,已经改变性质了。
几周前有个我以前的eng微信问我,怎么准备面试。要不要刷题。我跟他说,连我都刷
题,不过我只刷了大概二三十个题。主要是熟练一下coding,同时把思维模式总结一下
,发现有些类型生疏了就重新总结一下,那就够了。如果是背题,那就需要搞题海了。
题海,是低效的办法。就如同试图用穷举去取代归纳法。

【在 N*****r 的大作中提到】
:
: 考试本身没错
: 能背题能偷题那是 出题人有罪,监管人有罪,不是说考试制度错了
: 考试还是考察学习的最有效方法
: 国内不搞应试教育的下场,搞素质教育的结果,就是7岁的孩子用 crispr 改造基因治
: 疗癌症 还能发 sci
: 这个我觉得比背答案恶心多了,背答案好歹学了东西
: 作弊怎么都会有,不是考试制度的错

l*****c
发帖数: 1153
30
你说的很对。唯一“纠正”一下,考试不等于应试教育。考试不是坏东西,应试教育就
不好说了。应试教育对一个国家来说是一种策略,把大部分人的大脑洗成某种特别的模
式。

【在 N*****r 的大作中提到】
:
: 考试本身没错
: 能背题能偷题那是 出题人有罪,监管人有罪,不是说考试制度错了
: 考试还是考察学习的最有效方法
: 国内不搞应试教育的下场,搞素质教育的结果,就是7岁的孩子用 crispr 改造基因治
: 疗癌症 还能发 sci
: 这个我觉得比背答案恶心多了,背答案好歹学了东西
: 作弊怎么都会有,不是考试制度的错

相关主题
丰田工程师真的该枪毙啊 (转载)求助一个数据结构的求时间复杂度问题
发现了一个编程思路,解决c++内存管理问题请教windows 7 怎么增加堆栈上限
树的前序遍历新手问,大家平时使用recursion么?感觉很酷啊
进入Programming版参与讨论
N*****r
发帖数: 94
31

应试教育是基础,是大规模培养普通人才的办法
真正的天才,是能自己超出这个范围的
不能自己超出应试教育的范围的,也算不上天才,也不算被耽误,没啥可惜的
而且人的思维方式,是必须要洗脑的, 比如逻辑 比如数字计算,这都要形成肉体记忆
,否则的话就是所谓的榆木脑袋,怎么讲也听不懂, 他脑子里神经反应就没那个链接

【在 l*****c 的大作中提到】
: 你说的很对。唯一“纠正”一下,考试不等于应试教育。考试不是坏东西,应试教育就
: 不好说了。应试教育对一个国家来说是一种策略,把大部分人的大脑洗成某种特别的模
: 式。

m******r
发帖数: 1033
32
"不过我只刷了大概二三十个题。主要是熟练一下coding" 那您真是牛皮,好比姚明说
“我就投了二三十个篮,主要是熟悉一下框” ; 怎么办呢,有的人天生长得高,投的
准; 你问姚明你为什么投得准, 估计他也说不出来, 估计会看看你,‘为啥你投不
进’?
s******e
发帖数: 3
w********m
发帖数: 1137
34
想象有条蛇,自己吃自己
b***i
发帖数: 3043
35
除了洞察力,悟性,我觉得还要理解编译的一些基本工作。比如函数调用的时候是怎么
做的?就是函数使用的局域变量放在栈上,等函数返回后,这些变量就不用了,栈回到
调用它的那个函数的状态。
其实递归和普通的函数调用没多大区别,就是被调用的函数是自己。编译器也许并不需
要多做什么,仍然是把堆栈指针推进一下。要不,你自己学着不用递归,而是手动调整
堆栈来解决这些问题。也许就懂了。要不,找一个普通的BASIC语言解释程序,自己学
着加入函数调用,用堆栈实现函数的局域变量,实现递归。看看能不能帮你学会。

【在 m******n 的大作中提到】
: 阶乘,fibonacci数列这些入门的recursion很好理解
: 可是一到二叉树就懵,比如这个基本的
: void preOrder(struct BinaryTreeNode *root){
: if(root){
: printf("%d", root->data);
: preOrder(root->left);
: preOrder(root->right);
: }
: }
: 从字面看,它就是把pseudo code翻译一下,简单直接明了

m******r
发帖数: 1033
36
递归虽然很抽象, 但毕竟写起来短, 方便你死记硬背,5,6句话记不住?而且工作中
根本不常用,实在搞不懂就别折腾了。 好比弹琴,(打球,游泳,画画)机械的练一
练也可以弹得很动听,想当大师,另当别论。
h****e
发帖数: 2125
37
他只说刷了二三十题,没说就这样出去面试拿offer呀。

【在 m******r 的大作中提到】
: "不过我只刷了大概二三十个题。主要是熟练一下coding" 那您真是牛皮,好比姚明说
: “我就投了二三十个篮,主要是熟悉一下框” ; 怎么办呢,有的人天生长得高,投的
: 准; 你问姚明你为什么投得准, 估计他也说不出来, 估计会看看你,‘为啥你投不
: 进’?

g****t
发帖数: 31659
38
是否你可以问问你爸,看下面这句话是否有一定道理:
“一半没学会数学归纳法的,跟玩手机时间长的那一半有很大重叠。”
递归也好,数学归纳法也好,我认为不存在永远学不会这个问题。
这类东西,我认为就是读书,或者找来找去,总能找到一个合适自己理解的讲解的。
所以个人需要时间长短不同。

【在 b***i 的大作中提到】
: 你是说,中国小学太重视机械方法,而没有逻辑训练,一笔带过,所以后来学数学归纳
: 法就学不会?我在一定程度上同意你的观察,中国文化和教育体系不讲究学习的过程,
: 而是把结果告诉你。比如我们在大学学矩阵的时候根本不知道是干什么用的,先学习一
: 些运算的规定。等到了后来学习物理深了才用到矩阵。
: 不过,即使学校用了更好的方法,有些人也是学不会的。我爸是普通高中数学老师,他
: 观察八九十年代的普通高中里理科生一半不懂数学归纳法(高二)。这些学生就是不相
: 信数学归纳法能真的证明那些定理/命题。而另一半觉得这是显然的,一点就通。我觉
: 得这可能是思维深度或者速度决定的。几乎所有人都会用视觉图像识别和语音识别来打
: 酱油,走路回家,但是上升到基于语音语言的抽象一些的逻辑思维体系,比如几何,代
: 数,很多人就不理解了,什么是未知数x,多项式乘法,对数运算。我们的大部分初中

g****t
发帖数: 31659
39
以前篮球板有人说不相信kobe 训练一天进2000个投篮。
我说这完全可能的。很多人骂我。
于是我实证了一下,练了半年,半小时能进7个点,80个。
现在我儿子半小时很轻松进100多个。
所以我觉得很多问题其实是因为学生们手机用太多,没时间琢磨正事的后果。
不是因为学校老师教的不好。至少不全是。

【在 m******r 的大作中提到】
: "不过我只刷了大概二三十个题。主要是熟练一下coding" 那您真是牛皮,好比姚明说
: “我就投了二三十个篮,主要是熟悉一下框” ; 怎么办呢,有的人天生长得高,投的
: 准; 你问姚明你为什么投得准, 估计他也说不出来, 估计会看看你,‘为啥你投不
: 进’?

g****t
发帖数: 31659
40
这个不错。我给小孩也看看。

【在 s******e 的大作中提到】
: 看一下这儿:
: https://visualgo.net/bn/recursion

相关主题
reverse LL recursivelyrecurvion真的很难懂~~
[合集] 问个递归的问题请教一个作用域的问题
Python: What does this mean?[合集] 请问关于堆栈的问题
进入Programming版参与讨论
b***i
发帖数: 3043
41
那个时代哪有手机?连游戏机都没有。那些同学很刻苦,每天很早到学校。就是不理解
为什么数学归纳法可以用来证明定理。就是智力没到那个程度。
前几天我们群讨论,为什么美国没有实现全民上大学,而是只有35%,我就说,一半人
智力没到那个程度啊。
你不服?你懂广义相对论吗?人类能在有生之年学懂广义相对论的能超过千分之一吗?
学习时间无限长和学不会有区别吗?

【在 g****t 的大作中提到】
: 是否你可以问问你爸,看下面这句话是否有一定道理:
: “一半没学会数学归纳法的,跟玩手机时间长的那一半有很大重叠。”
: 递归也好,数学归纳法也好,我认为不存在永远学不会这个问题。
: 这类东西,我认为就是读书,或者找来找去,总能找到一个合适自己理解的讲解的。
: 所以个人需要时间长短不同。

g****t
发帖数: 31659
42
第一,很早到学校,跟刻苦是两回事。
第二,我不信每天很早到学校的群体中,
不懂数学归纳法的会超过50%。(你说overall比例是50%)。
这样,仍然是正相关。
我现在不懂广义相对论,需要的话,年底就能懂,你信不信。
本科物理系几个月的课程而已,有那么复杂吗?
科学不同于神秘主义,就在于发展出来的东西,有普遍性,原则上人人都能学会。
没有普遍性,还叫什么科学?把数学物理神秘化,没有根据。
当然,人类还未弄明白发明创造科学的过程,这是另一回事。
但单指科学结论而言,科学结论都是人人可以学习的----只要你花时间,有物质条件支
持。(应用,创造是另一回事)。

【在 b***i 的大作中提到】
: 那个时代哪有手机?连游戏机都没有。那些同学很刻苦,每天很早到学校。就是不理解
: 为什么数学归纳法可以用来证明定理。就是智力没到那个程度。
: 前几天我们群讨论,为什么美国没有实现全民上大学,而是只有35%,我就说,一半人
: 智力没到那个程度啊。
: 你不服?你懂广义相对论吗?人类能在有生之年学懂广义相对论的能超过千分之一吗?
: 学习时间无限长和学不会有区别吗?

l*****c
发帖数: 1153
43
看了一下大家的回覆,我感覺其實真正掌握递归的估计十分之一差不多。那一半掌握的
人里面大部分应该是知其然不知其所以然的。
其实我一直表达的观点是,中国传统的教育理念在从童年开始就没有给予大脑充分的逻
辑和方法论训练,因此在后期学习的时候,大部分人的大脑已经不具备根本上理解这套
体系的能力。这个你说是遗传也行,因为很大程度是原生家庭的教育影响力。
g****t
发帖数: 31659
44
这取决于你怎么看什么叫“真正掌握”。
我举个最简单的例子。楼主这个递归,求证其与for loop实现等价。
我怀疑没人能证明出来,因为牵涉到cpp的实现。你还得去查编译细节。
即便是最基础的教学语言,要证明递归和for loop等价,那对绝大多数人来说,
也得上过课才行。自己创造出来这种证明的,可以说百里无一。
而且先决条件是需要知道什么叫数学证明。还得理解什么是代数,加上一点点逻辑。
文科生学习的话,那确实要5年以上。

【在 l*****c 的大作中提到】
: 看了一下大家的回覆,我感覺其實真正掌握递归的估计十分之一差不多。那一半掌握的
: 人里面大部分应该是知其然不知其所以然的。
: 其实我一直表达的观点是,中国传统的教育理念在从童年开始就没有给予大脑充分的逻
: 辑和方法论训练,因此在后期学习的时候,大部分人的大脑已经不具备根本上理解这套
: 体系的能力。这个你说是遗传也行,因为很大程度是原生家庭的教育影响力。

n******t
发帖数: 4406
45

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
這個同意。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
這個真不一定。
~~~~~~~~~~~~~~~~~~~~~~~~~~
看你怎麼應試教育了。有些數學好的人,真有可能英文不及格,你要都算上可能就上不
了大學。

【在 N*****r 的大作中提到】
:
: 应试教育是基础,是大规模培养普通人才的办法
: 真正的天才,是能自己超出这个范围的
: 不能自己超出应试教育的范围的,也算不上天才,也不算被耽误,没啥可惜的
: 而且人的思维方式,是必须要洗脑的, 比如逻辑 比如数字计算,这都要形成肉体记忆
: ,否则的话就是所谓的榆木脑袋,怎么讲也听不懂, 他脑子里神经反应就没那个链接

N*****r
发帖数: 94
46

所谓数学好 什么水平
大部分人所谓的数学好,根本到不了天才的地步
我认识12岁学完微积分,15岁完成名校数学系本科课程的,20岁 phd之后也就是一普通
人, 谈不上天才, 他自己也认为自己就是泛泛
你所谓的数学好, 能好到这个程度吗,好到这个程度,总会有路的, 这样子的,其实
都不算天才,离真的天才差的太远了
大部分以为自己是被应试教育耽误了的人, 其实是过高估计了自己的实力,在现实中
碰壁,企图走条捷径
别的不说, 数学能力的基础就是语言能力,逻辑能力, 真的数学好,语言再怎么也能
弄个差不多, 做不到, 如果不是不想做,那只能证明数学能力没那么好

【在 n******t 的大作中提到】
:
: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
: 這個同意。
: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
: 這個真不一定。
: ~~~~~~~~~~~~~~~~~~~~~~~~~~
: 看你怎麼應試教育了。有些數學好的人,真有可能英文不及格,你要都算上可能就上不
: 了大學。

n******t
发帖数: 4406
47
“在怎麼也能弄個差不多”是最困難的事情。
數學好的人,不是真正語言能力很差,而是和你我這種人都沒有話好說,跟不要說和一
般路人大媽了。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
這屁都不是好吧。我和歐洲教育制度接觸之前也是這樣認爲的。我看到過高中裏面二項
式定理都算不明白的人,過了兩三年能搞代數幾何的open problem。這種人在中國有出
路??
~~~~~~~~~~~~~~~~~~~~~~~~~~~
這是兩件事,如果你對統計和邏輯有直覺的sense應該不會犯這種錯誤。即使99%的人認
爲系統A導致了自己不幸被證明是錯誤的,也不能說明剩下那1%的人如果真正因爲這個
系統A不是一個錯誤的系統,尤其是當這個系統A的一個重要職能就是讓0.001%的那種人
go through的時候。

【在 N*****r 的大作中提到】
:
: 所谓数学好 什么水平
: 大部分人所谓的数学好,根本到不了天才的地步
: 我认识12岁学完微积分,15岁完成名校数学系本科课程的,20岁 phd之后也就是一普通
: 人, 谈不上天才, 他自己也认为自己就是泛泛
: 你所谓的数学好, 能好到这个程度吗,好到这个程度,总会有路的, 这样子的,其实
: 都不算天才,离真的天才差的太远了
: 大部分以为自己是被应试教育耽误了的人, 其实是过高估计了自己的实力,在现实中
: 碰壁,企图走条捷径
: 别的不说, 数学能力的基础就是语言能力,逻辑能力, 真的数学好,语言再怎么也能

g****t
发帖数: 31659
48
高二开始两届数学奥赛金牌算天才不?至少统计意义上肯定算吧。
我高二跟他一块培训过段时间。
他耳朵有疾病。所以(在当时)...语言能力一言难尽。

【在 N*****r 的大作中提到】
:
: 所谓数学好 什么水平
: 大部分人所谓的数学好,根本到不了天才的地步
: 我认识12岁学完微积分,15岁完成名校数学系本科课程的,20岁 phd之后也就是一普通
: 人, 谈不上天才, 他自己也认为自己就是泛泛
: 你所谓的数学好, 能好到这个程度吗,好到这个程度,总会有路的, 这样子的,其实
: 都不算天才,离真的天才差的太远了
: 大部分以为自己是被应试教育耽误了的人, 其实是过高估计了自己的实力,在现实中
: 碰壁,企图走条捷径
: 别的不说, 数学能力的基础就是语言能力,逻辑能力, 真的数学好,语言再怎么也能

1 (共1页)
进入Programming版参与讨论
相关主题
面试题:debug: 函数return to a wrong placereverse LL recursively
丰田在嵌入式系统里用递归[合集] 问个递归的问题
丰田工程师真的该枪毙啊 (转载)Python: What does this mean?
发现了一个编程思路,解决c++内存管理问题recurvion真的很难懂~~
树的前序遍历请教一个作用域的问题
求助一个数据结构的求时间复杂度问题[合集] 请问关于堆栈的问题
请教windows 7 怎么增加堆栈上限这个C++程序为什么不能运行
新手问,大家平时使用recursion么?感觉很酷啊急问大牛们:关于fortran堆栈溢出
相关话题的讨论汇总
话题: recursion话题: 数学话题: 理解话题: preorder话题: 归纳法