本道题就是讲解斐波那契数列
原理:1 1 2 3 5 8 13 21
当前项等于前两项之和
C语言代码
//斐波那契
//序列 1 1 2 3 5 8 13 21 34
#include
int main() {
int i,n,m;
int a[50];
m=1;
scanf("%d",&m);
while(m--) {
scanf("%d",&n);
a[1]=1;
a[2]=1;
for(i=3; i<=n; i++) {
a[i] = a[i-1] + a[i-2];
}
printf("%d\n",a[n]);
}
}
java代码
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int c = sc.nextInt();
for (int j = 1; j <= c; j++) {
int n = sc.nextInt();
int a[] = new int[n];
a[0] = 1;
a[1] = 1;
for (int i = 2; i < a.length; i++) {
a[i] = a[i - 1] + a[i - 2];
}
System.out.println(a[n - 1]);
}
}
}
}
不用数组
这里我是用java写的
import java.util.Scanner;public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int num1 = 1;
int num2 = 1;
int num3 = 0;
int m = sc.nextInt();
while (m-- != 0) {
int n = sc.nextInt();
if (n == 1 || n == 2) {
System.out.println(1);
} else {
for (int i = 0; i < n - 2; i++) {
num3 = num1 + num2;
num1 = num2;
num2 = num3;
}
System.out.println(num3);
}
}
}
}
}