给你举个例子吧,猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,就只剩一个桃子了。求第一天共摘多少个桃子。
这个例子如果用回调函数,那先要确定几个思路:
1 猴子猜的桃是一个未知数,但是我们知道的是:到第10天的时候,桃子还剩下1个
2 每天都会吃掉前一天的一半零一个,那就是n=n/2+1,因为我们知道了第十天的剩余量,所以我们可以倒着来计算
第十天的量,n为桃子的总数量。n=(n+1)+1*2;
那利用回调函数就是
int fun(int n){
if (n == 10) {
return 1;
}
return (fun(n +1) + 1 ) * 2;
}
然后在main函数中再进行调用就可以。
其实回调函数你只需要确定两个意思就可以。
1、找出fun(n) 与 fun(n -1)、fun(n - 2) 之间的关系,如果找不到这样的关系,就说明它不可以使用回调函数
2、确定什么时候返回一个确定值
|