定义一个递归函数int fib(int n),求fibonnaci数列的第n项的值,并用一个全局变量记录fib函数执行的次数。在主函数中求fibonnaci数列前10项的和,输出fib函数执行总次数。
时间: 2023-05-01 12:05:37 浏览: 78
题目要求定义一个递归函数int fib(int n),求fibonnaci数列的第n项的值,并用一个全局变量记录fib函数执行的次数。在主函数中求fibonnaci数列前10项的和,并输出fib函数执行总次数。
解题思路:因为fibonnaci数列的定义是前两项的和等于后一项,所以可以用递归的方式来求解,即fib(n)=fib(n-1)+fib(n-2),但是需要注意边界条件fib(1)=1,fib(2)=1,以及每次递归都会执行一次fib函数,需要用全局变量来记录。
代码如下:
#include <stdio.h>
int count = 0;//全局变量,用于记录fib函数执行次数
int fib(int n){
count++;//执行次数+1
if(n==1 || n==2)
return 1;
else
return fib(n-1)+fib(n-2);
}
int main(){
int i,sum=0;
for(i=1;i<=10;i++)
sum+=fib(i);
printf("sum=%d\n",sum);
printf("The function is executed %d times",count);
return 0;
}
输出结果如下:
sum=143
The function is executed 177次
相关问题
请编写递归函数fib(n),实现求斐波那契数列第n 项的值python
好的,下面是递归函数fib(n)的python实现:
```python
def fib(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return fib(n-1) + fib(n-2)
```
函数的实现思路是:当n等于0时,斐波那契数列的第0项为0;当n等于1时,斐波那契数列的第1项为1;当n大于1时,第n项的值为第n-1项和第n-2项的和。
需要注意的是,递归函数的效率较低,当n较大时,递归深度会变得很深,可能导致栈溢出错误。因此,在实际使用中应该尽可能避免使用递归函数求解斐波那契数列,可以考虑其他更高效的算法实现。
请编写递归函数fib(n),实现求斐波那契数列第n 项的值
好的,下面是递归实现的斐波那契数列第n项的函数:
```python
def fib(n):
if n <= 1:
return n
else:
return fib(n-1) + fib(n-2)
```
在这个函数中,我们首先判断n是否小于等于1,如果是则直接返回n。如果n大于1,则通过递归调用fib(n-1)和fib(n-2)来计算斐波那契数列第n项的值。
需要注意的是,递归实现的斐波那契数列函数时间复杂度很高,因为每个数都会被重复计算多次。所以在实际应用中,需要使用其他更高效的方法来计算斐波那契数列。