由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 门外汉求教 return statement用法
相关主题
BST查找next lowest 可以达到 O(lg N)? (转载)问个GSL的问题
请教函数 INIT 怎么能free memory问个程序问题
刚看完类这一章,有些大小问题,请指教,谢谢What value does the variable a hold after a = 4[“studios”]--请问这个表达式的值是什么?
经过两个月,矩阵库基本完成,c++11就是好求助:maple转换成Fortran的问题
如何让这个cur变量正确指向新地址请教个script问题
leetcode 一题 (转载)c 里面的local static variable
Java弱弱请救几个小问题static variable存在heap还是stack?
求教:根据给定数组创建二叉树问一个private destructor的问题
相关话题的讨论汇总
话题: stack话题: variable话题: temp话题: treenode话题: return
进入Programming版参与讨论
1 (共1页)
C********a
发帖数: 10
1
如果有一个recursive call 在终结的时候返回一个表达式的值 怎样才能把这个结果一
层层传递出去?
比如这个找in order tree最小值的方法:
public treeNode treeMinimumRecursive(treeNode root){
if (root.left=NULL)
return root;
else
treeMinimumRecursive(treeNode root.left);
}
开始做条件判断,treeNode.left 不为空就一直调用自己, 直到为空以后返回当前的
treeNode。
然后上一层拿到这个返回值,怎么才能把它作为自己的返回值再传给上层的函数?
网上看的似乎是把最后一行前加return 改成 return treeMinimumRecursive(treeNode
root.left);
这个return的是一个方法 而不是一个表达式 这种情况有定义吗
门外汉刚开始看 请各位拍砖
s******u
发帖数: 501
2
else里面的那个也必须要有return,不然你这个函数就有可能没有返回值了,自然也得
不到正确结果
返回的还是表达式,而不是方法。这个表达式是treeMinimumRecursive(treeNode root
.left)这个函数的返回值。可以把这个return写成两步,看的就清楚了
auto r = treeMinimumRecursive(treeNode root.left);
return r;
G***l
发帖数: 355
3
基本概念。纸上画画stack。
比如一个递归函数
factorial(n):
if n == 1:
return 1
else:
return n*factorial(n-1)
在main里调用
int param = 2
result = factorial(param)
程序会产生stack结构:
stack of main
------------------------
stack main:param=2
调用factorial(2),进入stack of f(2)
------------------------
|stack f2:n=2
|n不等于1执行n*f(1),进入stack of f(1)
| ------------------------
| |stack f1:n=1
| |stack f1:a_const_variable=1
| |n=1返回a_const_variable=1, 销毁stack of f(1)
| ------------------------
|f(1)返回1,回到stack of f(2),f(2)将返回值保存在某temp_variable_a
|stack f2:temp_variable_a=1
|继续执行,n*temp_variable_a得到结果保存在某temp_variable_b
|stack f2:temp_variable_b = n*temp_variable_a = 2
|返回temp_variable_b=2, 销毁stack of f(2)
-------------------------
f(2)返回2,回到stack of main,买你将返回值保存在某temp_variable_c
stack main:temp_variable_c=2
执行result=temp_variable_c
stack main:result=2
继续执行main。。。。
-------------------------------



【在 C********a 的大作中提到】
: 如果有一个recursive call 在终结的时候返回一个表达式的值 怎样才能把这个结果一
: 层层传递出去?
: 比如这个找in order tree最小值的方法:
: public treeNode treeMinimumRecursive(treeNode root){
: if (root.left=NULL)
: return root;
: else
: treeMinimumRecursive(treeNode root.left);
: }
: 开始做条件判断,treeNode.left 不为空就一直调用自己, 直到为空以后返回当前的

C********a
发帖数: 10
4
谢谢 看懂了 我水平太臭

【在 G***l 的大作中提到】
: 基本概念。纸上画画stack。
: 比如一个递归函数
: factorial(n):
: if n == 1:
: return 1
: else:
: return n*factorial(n-1)
: 在main里调用
: int param = 2
: result = factorial(param)

1 (共1页)
进入Programming版参与讨论
相关主题
问一个private destructor的问题如何让这个cur变量正确指向新地址
请问一个关于 cost of pointer的问题leetcode 一题 (转载)
C++ Q05: pointer to constant variableJava弱弱请救几个小问题
请教windows 7 怎么增加堆栈上限求教:根据给定数组创建二叉树
BST查找next lowest 可以达到 O(lg N)? (转载)问个GSL的问题
请教函数 INIT 怎么能free memory问个程序问题
刚看完类这一章,有些大小问题,请指教,谢谢What value does the variable a hold after a = 4[“studios”]--请问这个表达式的值是什么?
经过两个月,矩阵库基本完成,c++11就是好求助:maple转换成Fortran的问题
相关话题的讨论汇总
话题: stack话题: variable话题: temp话题: treenode话题: return