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; }