给我写一个能解决递归与分治算法问题的能运行的完整C语言代码
时间: 2024-10-08 20:17:11 浏览: 33
递归和分治算法是一种常见的解决问题策略,特别是对于那些可以分解成相似子问题的问题。下面是一个简单的例子,演示如何使用分治法计算斐波那契数列的第n项。请注意,递归版本可能导致栈溢出,如果数值过大。这里提供了一个迭代版的示例,因为它更高效。
```c
#include <stdio.h>
// 迭代版本的斐波那契数列计算函数
long long fibonacci(int n) {
if (n <= 1) {
return n;
}
long long fib_n_1 = 0;
long long fib_n_2 = 1;
long long fib_n = 0;
for (int i = 2; i <= n; i++) {
fib_n = fib_n_1 + fib_n_2;
fib_n_1 = fib_n_2;
fib_n_2 = fib_n;
}
return fib_n;
}
int main() {
int num;
printf("请输入一个非负整数n: ");
scanf("%d", &num);
// 检查输入是否合法
if (num < 0) {
printf("输入错误,只能计算非负整数。\n");
return -1;
}
long long result = fibonacci(num);
printf("斐波那契数列的第%d项是: %lld\n", num, result);
return 0;
}
```
阅读全文