double fun(int n) { if(n==1) return 0; else if(n==2) return 1; else return fun(n-1)+fun(n-2); }解释return 0和return 1 是什么意思
时间: 2024-02-02 13:04:13 浏览: 97
这是一个递归函数,函数名为`fun`,输入参数为整数`n`。这个函数的作用是计算斐波那契数列中第n个数的值。斐波那契数列的定义是:第1项和第2项为1,从第3项开始,每一项都是前两项之和。
在这个函数中,当输入参数`n`为1时,说明要计算的是斐波那契数列中的第1项,因为斐波那契数列中的第1项为1,所以函数返回0。
当输入参数`n`为2时,说明要计算的是斐波那契数列中的第2项,因为斐波那契数列中的第2项为1,所以函数返回1。
当输入参数`n`大于2时,说明要计算的是斐波那契数列中的第n项,根据斐波那契数列的定义,第n项等于第n-1项和第n-2项之和,因此函数返回`fun(n-1)+fun(n-2)`。
相关问题
#include <stdio.h> double fun(int n) { int i; double y=1.0; for(i=1;i<=n;i++) { y*=i; } return y; } int main() { int m,n; scanf("%d %d",&m,&n); double result=fun(n)/(fun(m)*fun(n-m)); printf("result = %.0lf\n", result); return 0; }
你提供的代码是使用阶乘的方法来计算组合数的C语言代码示例。首先,定义了一个名为`fun`的函数,该函数用于计算一个数的阶乘。在`fun`函数中,使用了一个循环来累积乘法,将每个数相乘得到阶乘的结果。
在`main`函数中,首先输入m和n的值。然后,通过调用`fun`函数计算n的阶乘,并将结果除以m的阶乘和(n-m)的阶乘,得到组合数的结果。最后,将结果输出。
这种方法也是一种常见的计算组合数的方式,通过计算阶乘来得到结果。但是需要注意的是,在计算阶乘时,可能会遇到溢出的问题,当输入的数较大时,阶乘可能会超过数据类型的表示范围。因此,在实际使用中,需要考虑使用更优化的算法来计算组合数,以避免溢出问题。
希望对你有所帮助!如果有任何疑问,请随时提问。
下面函数的功能是计算s=1+1/(1*2)+1/(1*2*3)+...+1/(1*2*3*...*n),请填空。 double+fun(int+n) { +____+s=0.0,fac=1.0
```c
double fun(int n)
{
double s = 0.0, fac = 1.0;
for (int i = 1; i <= n; i++)
{
fac *= i;
s += 1 / fac;
}
return s;
}
```
阅读全文