回调函数和递归函数

本文深入探讨了编程语言中的递归函数概念及其工作原理,并以阶乘运算为例进行说明。同时,解释了回调函数的概念及其应用,以Win32下的窗口过程函数为例展示回调机制的实际使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      其实这两种函数没什么关系,只是对它们不是很了解,所以拿过来对比一下。

      在编程语言中,把直接或间接地调用自身的函数称为递归函数。函数的构建通常需要一个函数或者一个过程来完成。一个含直接或间接调用本函数语句的函数被称之为递归函数,它必须满足以下两个条件:

  1) 在每一次调用自己时,必须是(在某种意义上)更接近于解;

  2) 必须有一个终止处理或计算的准则。

 以求n!为例:

  ①写出迭代公式:n!的迭代公式为

  ②确定递归终止条件:1!=1就是递归终止条件

  ③将①②翻译成代码:将迭代公式等号右边的式子写入return语句中,即return (fact(n-1))*n;

  将1!=1翻译成判断语句:if(n==1) return 1;

  按照先测试,后递归的原则写出代码。

public static int facter(int n) {
if (n == 1) {
return 1;
}

return (facter(n - 1)) * n;

}

回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数。例如Win32下的窗口过程函数就是一个典型的回调函数。一般说来,C不会自己调用B,C提供B的目的就是让S来调用它,而且是C不得不提供。由于S并不知道C提供的B姓甚名谁,所以S会约定B的接口规范(函数原型),然后由C提前通过S的一个函数R告诉S自己将要使用B函数,这个过程称为回调函数的注册,R称为注册函数。Web Service以及Java的RMI都用到回调机制,可以访问远程服务器程序。

回调函数也就是这个意思了。

转载于:https://www.cnblogs.com/xiangfeipy/archive/2012/06/13/2548081.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值