循环控制~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]作为数组,后来不够数组越界,因为存的是中间值所以应该尽量大

 

posted on 2022-10-17 16:20  罗小罗佳油  阅读(69)  评论(0编辑  收藏  举报