有人可以向我解释为什么输出为6吗? return refun(a-1,b-1)*a;
行是什么意思?
代码如下:
#include <iostream>
using namespace std;
long refun(int a, int b) {
if (a >= 0 && b == 0)
return 1;
else if (a == 0 && b>0)
return 0;
else
return refun(a - 1, b - 1)*a;
}
int main()
{
int x = 3, y = 2;
long z = refun(x, y);
cout << z;
return 0;
}
答案 0 :(得分:3)
此行
return refun(a-1,b-1)*a;
的含义
返回语句return expr
退出函数,并将表达式的值返回给调用者。
refun
是函数的名称,因此refun(argument, list)
调用函数,参数列表中表达式的结果将作为参数传递到函数中。 -
是减法运算符,*
是您在学校时应该熟悉的乘法运算符。
由于refun
自称,所以它是递归的。
答案 1 :(得分:1)
返回拒绝(a-1,b-1)* a;
有一个使用refun()的递归调用,返回的结果乘以变量'a'。
递归函数使用一种称为“调用栈”的东西。当程序调用函数时,该函数位于调用栈的顶部。
使用它进行空运行,您很容易得到6。