有以下数列:1、1、1、3、5、9、17… 除去前三项,其他项均为该数前三项之和;要求用C语言输出第n项的值。
时间: 2024-10-22 14:08:02 浏览: 19
这是一个典型的斐波那契数列(Fibonacci sequence)问题,其中每一项都等于前两项之和。在C语言中,你可以用循环或者递归的方式来计算第n项的值。这里我们提供一种动态规划的方法,避免重复计算:
```c
#include <stdio.h>
long long fib(int n) {
if (n <= 0) {
printf("Invalid input! Please enter a positive integer.\n");
return -1;
} else if (n == 1 || n == 2) {
return n - 1; // 返回前两项,因为序列从第三项开始才符合规则
}
long long prev = 1, curr = 1;
for (int i = 3; i <= n; i++) {
long long next = prev + curr;
prev = curr;
curr = next;
}
return curr;
}
int main() {
int n;
printf("Enter a positive integer to find its Fibonacci number: ");
scanf("%d", &n);
long long result = fib(n);
if (result != -1) {
printf("The %dth Fibonacci number is: %lld\n", n, result);
}
return 0;
}
```
在这个程序中,用户输入一个正整数n,然后调用`fib(n)`函数来计算并返回第n个斐波那契数。注意,如果n小于或等于0,函数会返回错误信息。
阅读全文
相关推荐

















