使用递归写一个求斐波那契数的函数,在main()函数中输入一个自然数,输出不小于该自然数的最小的一个斐波那契数
时间: 2024-02-28 16:56:26 浏览: 128
好的,下面是代码实现:
```c
#include <stdio.h>
int fib(int n);
int minFib(int n);
int main() {
int n;
printf("请输入一个自然数:");
scanf("%d", &n);
printf("不小于%d的最小斐波那契数是:%d\n", n, minFib(n));
return 0;
}
int fib(int n) {
if (n <= 1) {
return n;
} else {
return fib(n-1) + fib(n-2);
}
}
int minFib(int n) {
int i = 1;
while (fib(i) < n) {
i++;
}
return fib(i);
}
```
以上代码中,我们首先定义了一个 `fib` 函数,使用递归的方式来计算斐波那契数列的值。当 `n` 小于等于1时,斐波那契数列的第 `n` 项的值为 `n`,否则,斐波那契数列的第 `n` 项的值为前两项的和。
接着,我们定义了一个 `minFib` 函数,使用循环的方式来找到不小于 `n` 的最小的斐波那契数。具体实现是,从斐波那契数列的第一项开始,依次计算每一项的值,直到找到第一个不小于 `n` 的斐波那契数为止。
最后,在 `main` 函数中,我们从键盘输入一个自然数 `n`,然后调用 `minFib` 函数来求不小于 `n` 的最小的斐波那契数,并输出结果。
阅读全文