递归&回调函数,以及他们的区别
时间: 2023-07-12 20:26:02 浏览: 116
回调函数就是一个通过函数指针调用的函数
递归和回调函数都是在程序中调用函数的方式,但它们有些不同:
递归是函数直接或间接地调用自身,通常用于解决可以分解成规模更小的子问题的问题。递归可以使代码更简洁,但如果递归层数太多,会导致栈溢出等问题。
下面是一个递归实现斐波那契数列的示例代码:
```c++
int fib(int n) {
if (n == 0) {
return 0;
} else if (n == 1) {
return 1;
} else {
return fib(n - 1) + fib(n - 2);
}
}
```
回调函数是一个函数指针,它作为参数传递给另一个函数,并在该函数执行期间被调用。回调函数通常用于异步编程、事件处理等场景。
下面是一个使用回调函数的示例代码:
```c++
void process(int n, void (*callback)(int)) {
for (int i = 0; i < n; i++) {
callback(i);
}
}
void print(int n) {
cout << n << endl;
}
int main() {
process(5, print);
return 0;
}
```
在上面的代码中,`process`函数接受一个整数和一个函数指针作为参数。它会循环`n`次,并在每次循环中调用`callback`函数指针。在`main`函数中,我们将`print`函数作为回调函数传递给`process`函数。每次调用`print`函数时,它会打印当前循环的计数器值。
阅读全文