#include <stdio.h> int main() { int a, b,c=1,v1=1,v2=0; scanf("%d",&a); for(b=1;b<a;b++){ c=v1+v2; v2=v1; v1=c; } printf("%d",c); }
#include <stdio.h> // 计算第 n 项的斐波那契数 int fibonacci_at(int n) { /* * f1 : 比喻为指针,一开始指向第一项数 * f2 : 比喻为指针,一开始指向第二项数 * result : 由 f1 和 f2 求和而来,即为第三项的数 * * 如在这样的斐波那契数列中:1, 1, 2, 3, 5, 8 ... * f1 和 f2 的指向为: f1 f2 */ int f1 = 1, f2 = 1, result = f1 + f2; if (n < 3) { return 1; } /* * 在这样的斐波那契数列中,只在计算第4项数才开始向右移动 f1 和 f2 * * 计算第3项:1, 1, 2, 3, 5, 8 ... * f1 f2 * 计算第4项:1, 1, 2, 3, 5, 8 ... * f1 f2 * 计算第5项:1, 1, 2, 3, 5, 8 ... * f1 f2 */ while (n-- > 3) { f1 = f2; f2 = result; result = f1 + f2; } return result; } int main() { int n = 0; scanf("%d", &n); printf("%d", fibonacci_at(n)); return 0; }