C语言斐波那契数列输入多个数
时间: 2024-10-03 11:04:51 浏览: 20
在C语言中,要让用户输入并计算多个斐波那契数,你可以创建一个循环结构,如for或while循环,这样用户可以连续输入数字直到选择停止。下面是一个简单的示例程序,它会读取用户输入的整数,并打印出对应的斐波那契序列:
```c
#include <stdio.h>
// 斐波那契函数
int fibonacci(int n) {
if (n <= 1)
return n;
else
return fibonacci(n - 1) + fibonacci(n - 2);
}
int main() {
int num, i = 0;
printf("请输入一个正整数(输入0结束):\n");
while ((num = getchar()) != '0') { // 使用getchar处理回车键
i++;
printf("第 %d 个斐波那契数是:%d\n", i, fibonacci(num));
}
printf("\n程序结束,感谢使用!\n");
return 0;
}
```
在这个程序中,`fibonacci()` 函数用于递归计算斐波那契数。用户每输入一个非零数字,程序就会计算并显示相应的斐波那契值。
相关问题
c语言fibonacci数列
Fibonacci数列是一个著名的数列,它从第0项和第1项开始,之后的每一项都是前两项的和。数列的前几项是:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...,用数学公式表示就是:F(n) = F(n-1) + F(n-2),其中F(0)=0, F(1)=1。
在C语言中,可以通过递归或循环的方式来实现Fibonacci数列的计算。以下是使用递归方法的一个简单示例:
```c
#include <stdio.h>
// 递归计算Fibonacci数列的第n项
int fibonacci(int n) {
if (n <= 1) {
return n;
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
int main() {
int n;
printf("请输入要计算的Fibonacci数列项数:");
scanf("%d", &n);
printf("Fibonacci数列的第%d项是:%d\n", n, fibonacci(n));
return 0;
}
```
需要注意的是,递归方法虽然简洁,但效率较低,尤其是对于较大的n值,因为它会重复计算很多子问题。为了提高效率,可以使用动态规划的方法,通过循环和一个数组来存储已经计算过的Fibonacci数,避免重复计算。
C语言多线程斐波那契数列
以下是一种使用C语言多线程计算斐波那契数列的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#define MAX_N 100
int n;
int fib[MAX_N];
void *fibonacci(void *arg) {
int *p = (int *)arg;
int i = *p;
if (i == 0) {
fib[0] = 0;
pthread_exit(NULL);
}
if (i == 1) {
fib[1] = 1;
pthread_exit(NULL);
}
int a = 0, b = 1;
for (int j = 2; j <= i; j++) {
fib[j] = a + b;
a = b;
b = fib[j];
}
pthread_exit(NULL);
}
int main(int argc, char *argv[]) {
pthread_t thread[MAX_N];
int thread_args[MAX_N];
if (argc != 2) {
printf("Usage: %s <number>\n", argv[0]);
return 1;
}
n = atoi(argv[1]);
if (n > MAX_N) {
printf("Error: the number is too large\n");
return 1;
}
for (int i = 0; i <= n; i++) {
thread_args[i] = i;
pthread_create(&thread[i], NULL, fibonacci, &thread_args[i]);
}
for (int i = 0; i <= n; i++) {
pthread_join(thread[i], NULL);
}
printf("The Fibonacci sequence up to %d is:\n", n);
for (int i = 0; i <= n; i++) {
printf("%d ", fib[i]);
}
printf("\n");
return 0;
}
```
该程序使用了一个数组 `fib` 来保存斐波那契数列,使用了一个数组 `thread_args` 来传递线程参数,使用了 `pthread_create` 函数创建线程,使用了 `pthread_join` 函数等待线程结束,使用了 `pthread_exit` 函数退出线程。当启动线程时,每个线程计算从 0 到当前线程编号的斐波那契数列,并将结果保存在 `fib` 数组中。最后,主线程打印出完整的斐波那契数列。