1、计算斐波那契数列的第n项(递归方法)
编写一个程序,使用递归方法计算斐波那契数列的第n
项。
#include <stdio.h>
// 递归计算斐波那契数列的第n项
int fibonacci(int n) {
if (n <= 0) return 0;
if (n == 1) return 1;
return fibonacci(n - 1) + fibonacci(n - 2);
}
int main() {
int n;
printf("输入正整数: ");
scanf("%d", &n);
printf("%d 位置上的斐波那契数 %d\n", n, fibonacci(n));
return 0;
}
2、 计算斐波那契数列的第n项(非递归方法)
编写一个程序,使用非递归方法(迭代)计算斐波那契数列的第n
项。
#include <stdio.h>
// 非递归计算斐波那契数列的第n项
int fibonacci(int n) {
if (n <= 0) return 0;
if (n == 1) return 1;
int a = 0, b = 1, c;
for (int i = 2; i <= n; ++i) {
c = a + b;
a = b;
b = c;
}
return b;
}
int main() {
int n;
printf("输入正整数: ");
scanf("%d", &n);
printf("%d 位置上的斐波那契数 %d\n", n, fibonacci(n));
return 0;
}
3、打印斐波那契数列的前n项(递归方法)
编写一个程序,使用递归方法打印斐波那契数列的前n项。
#include <stdio.h>
// 递归计算斐波那契数列的第n项
int fibonacci(int n) {
if (n <= 0) return 0;
if (n == 1) return 1;
return fibonacci(n - 1) + fibonacci(n - 2);
}
// 打印斐波那契数列的前n项
void printFibonacci(int n) {
for (int i = 0; i < n; ++i) {
printf("%d ", fibonacci(i));
}
printf("\n");
}
int main() {
int n;
printf("输入正整数: ");
scanf("%d", &n);
printf("斐波那契数列的前 %d 项: ", n);
printFibonacci(n);
return 0;
}
4、打印斐波那契数列的前n项(非递归方法)
编写一个程序,使用非递归方法(迭代)打印斐波那契数列的前n
项。
#include <stdio.h>
// 打印斐波那契数列的前n项(非递归)
void printFibonacci(int n) {
int a = 0, b = 1, c;
for (int i = 0; i < n; ++i) {
printf("%d ", a);
c = a + b;
a = b;
b = c;
}
printf("\n");
}
int main() {
int n;
printf("输入正整数: ");
scanf("%d", &n);
printf("斐波那契数列的前 %d 项: ", n);
printFibonacci(n);
return 0;
}
5、 使用数组存储斐波那契数列的前n项
编写一个程序,将斐波那契数列的前n
项存储在一个数组中,并打印出来。
#include <stdio.h>
// 使用数组存储斐波那契数列的前n项
void fibonacci(int n, int arr[]) {
if (n > 0) arr[0] = 0;
if (n > 1) arr[1] = 1;
for (int i = 2; i < n; ++i) {
arr[i] = arr[i - 1] + arr[i - 2];
}
}
int main() {
int n;
printf("输入正整数: ");
scanf("%d", &n);
int arr[n];
fibonacci(n, arr);
printf("斐波那契数列的前 %d 项: ", n);
for (int i = 0; i < n; ++i) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
6、使用动态内存分配存储斐波那契数列的前n项
编写一个程序,使用动态内存分配(malloc
)将斐波那契数列的前n
项存储在一个数组中,并打印出来。
#include <stdio.h>
#include <stdlib.h>
// 使用动态内存分配存储斐波那契数列的前n项
int* fibonacci(int n) {
int *arr = (int*)malloc(n * sizeof(int));
if (arr == NULL) {
printf("Memory allocation failed\n");
exit(1);
}
if (n > 0) arr[0] = 0;
if (n > 1) arr[1] = 1;
for (int i = 2; i < n; ++i) {
arr[i] = arr[i - 1] + arr[i - 2];
}
return arr;
}
int main() {
int n;
printf("输入正整数: ");
scanf("%d", &n);
int *arr = fibonacci(n);
printf("斐波那契数列的前 %d 项: ", n);
for (int i = 0; i < n; ++i) {
printf("%d ", arr[i]);
}
printf("\n");
free(arr);
return 0;
}