回调和递归是一回事吗?
发布网友
发布时间:2022-05-04 12:04
我来回答
共5个回答
热心网友
时间:2022-04-23 08:13
回调和递归不一回事。
1、程序调用自身的编程技巧称为递归( recursion)。
一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
注意:
(1) 递归就是在过程或函数里调用自身;
(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
2、java回调机制:软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。
同步调用:一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;
回调:一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;
异步调用:一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接口)。
回调和异步调用的关系非常紧密:使用回调来实现异步消息的注册,通过异步调用来实现消息的通知。
热心网友
时间:2022-04-23 09:31
回调和递归是两回事。回调是你注册函数到系统或者库,系统或库在合适的时候调用你的函数。比如vc++编程中OnXXX之类的,就是回调,但鼠标移动的时候,会调用你的OnXXX执行特定处理。
递归则是完全不同的概念,是一个函数直接或者间接的调用自己,除非编译器能智能的把递归转换为非递归的(比如尾递归的优化),否则由于需要保存递归的记录,太多的递归调用会导致栈的溢出。
热心网友
时间:2022-04-23 11:06
此乃函数重载.
比如:CView::OnMouseMove你不调用它,难道你准备自己写个完全的?多麻烦请看此函数的原代码.
热心网友
时间:2022-04-23 12:57
一个可存可取,一个只取不存
热心网友
时间:2022-04-23 15:05
简单说下
1,递归:函数自身调用自身,函数内部又使用到了该函数功能。
2,所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数。
下面直接上代码便于你理解递归
Java code?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class digui {
public static void main(String[] args) {
int sum=getSum(3);
System.out.println("sum="+sum);
}
public static int getSum(int num){
if(num==1)
return 1;
return num+getSum(num-1);
}
/*下面也是一种递归方式。类似于show()通过method()直接调用show()方法。
public static void show(){
method();
}
public static void method(){
show();
}*/
}