循环控制~17 斐波那契数列
题目描述:
K=1,1,2,3,5,8,13,21...
输入:
输入一行,包含一个正整数k。(1 <= k <= 46)
输出:
输出一行,包含一个正整数,表示菲波那契数列中第k个数的大小
1 #include<stdio.h> 2 int main(){ 3 int n; //求第几个数的斐波那契数列 4 scanf("%d",&n); 5 int tem[10000]; 6 tem[1]=1,tem[2]=1; 7 int n1=1,n2=1,n3=2; //第一第二个数都为1,n1n2n3三个数已确定 8 if(n==1 || n==2){ 9 printf("1"); 10 } 11 // else if(n==3){ 12 // printf("2"); 13 // } 14 else{ 15 for(int i=3;i<=n;i++){ 16 tem[i]=tem[i-1]+tem[i-2]; 17 } 18 printf("%d",tem[n]); 19 } 20 return 0; 21 }
soulution:
1 思路:设置一个数组来存放求的结果之前的中间数,使得第一第二个数组赋初值为1,1~中间值从第三个开始算起:tem[i]=tem[i-1]+tem[i-2]
2segmentation fault:
刚开始tem给了[100]作为数组,后来不够数组越界,因为存的是中间值所以应该尽量大