下列给定程序中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值从第1项起,斐波拉契数列为:11、2、3、5、8、13、21、..... 例如:若给n输入7,则该项的斐波拉契数值为13。
时间: 2023-07-10 16:06:13 浏览: 360
以下是给定程序中函数fun的代码实现:
```
#include <stdio.h>
int fun(int n)
{
if (n == 1 || n == 2) // 如果n等于1或2,则返回1
return 1;
else // 否则,返回前两项之和
return fun(n-1) + fun(n-2);
}
int main()
{
int n, result;
printf("请输入要计算的斐波那契数列的项数:");
scanf("%d", &n);
result = fun(n);
printf("第%d项的斐波那契数列的值为:%d\n", n, result);
return 0;
}
```
函数fun的功能是使用递归算法计算斐波拉契数列中第n项的值。当n等于1或2时,返回1,否则返回前两项之和。在主函数中,先输入要计算的斐波那契数列的项数n,然后调用函数fun计算第n项的值,并输出。
相关问题
2.下列给定程序中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值。从第 1项起,斐波拉契数列为:1、1、2、3、5、8、13、21、...... 例如,若给n输入7,则该项的斐波拉契数值为13。 请改正程序中的错误,使它能得出正确结果。 #include <stdio.h> long fun(int g) { /**********found**********/ switch(g); { case 0: return 0; /**********found**********/ case 1 ;case 2 : return 1 ; } return( fun(g-1)+fun(g-2) ); } main() { long fib; int n; printf("Input n: "); scanf("%d",&n); printf("n = %d\n",n); fib=fun(n); printf("fib = %d\n\n",fib); }
改正后的程序如下:
```c
#include <stdio.h>
long fun(int g) {
switch(g) {
case 0:
return 0;
case 1:
case 2:
return 1;
default:
return (fun(g-1) + fun(g-2));
}
}
int main() {
long fib;
int n;
printf("Input n: ");
scanf("%d", &n);
printf("n = %d\n", n);
fib = fun(n);
printf("fib = %ld\n\n", fib);
return 0;
}
```
修改说明:
1. 删除了 `switch` 语句后的多余分号。
2. 将 `return( fun(g-1)+fun(g-2) );` 修改为 `return (fun(g-1) + fun(g-2));`。
3. 在 `main` 函数中将 `%d` 修改为 `%ld`,因为 `fib` 的类型是 `long`。同时添加 `return 0;` 语句,表示程序正常结束。
用C语言编程递归算法计算斐波拉契数列中第n项的值
斐波那契数列是指:0、1、1、2、3、5、8、13、21、34……在数学上,斐波那契数列以如下被以递推的方法定义:
F(0) = 0
F(1) = 1
F(n) = F(n-1) + F(n-2) (n ≥ 2,n ∈ N*)
以下是使用递归算法计算斐波那契数列中第n项的值的 C 语言程序:
```c
#include <stdio.h>
int fibonacci(int n)
{
if (n == 0) { // F(0) = 0
return 0;
} else if (n == 1) { // F(1) = 1
return 1;
} else { // F(n) = F(n-1) + F(n-2)
return fibonacci(n-1) + fibonacci(n-2);
}
}
int main()
{
int n;
printf("Please enter a positive integer n: ");
scanf("%d", &n);
printf("Fibonacci(%d) = %d\n", n, fibonacci(n));
return 0;
}
```
程序中,我们定义了一个递归函数 `fibonacci`,用于计算斐波那契数列中第n项的值。在函数中,首先判断特殊情况:当 n=0 时,F(0)=0;当 n=1 时,F(1)=1。否则,根据递推公式 F(n) = F(n-1) + F(n-2) 计算 F(n) 的值,其中 F(n-1) 和 F(n-2) 分别通过递归调用 `fibonacci(n-1)` 和 `fibonacci(n-2)` 来计算。最后,在 `main` 函数中,读入要求的项数 n,然后调用 `fibonacci` 函数计算第 n 项的值,输出结果。
阅读全文