斐波那契求和,程序哪里错了?

#include <iostream>

using namespace std;

int main()

{
    int n;
    cin>>n;
    int a[n];
    a[0]=a[1]=1;
    int sum=0,i;
    if(n==1) sum=1;
else if(n==2) sum=2;
   else{ for(i=2;i<n;i++){
        a[i]=a[i-1]+a[i-2];
        sum=a[i]+2;
    }
   }
    cout << sum<< endl;
    return 0;
}
 

#include <iostream>
using namespace std;

int main()
{
    int n;
    cin>>n;
    int a[n];
    a[0] = a[1] = 1;
    int sum = 0, i;
    if(n == 1) 
        sum = 1;
    else if(n == 2)
        sum = 2;
    else{
        sum = 2;//这个很重要
        for(i = 2; i < n; i++){
            a[i] = a[i-1] + a[i-2];
            sum += a[i];
        }
    }
    cout << sum<< endl;
    return 0;
}

你期待什么输出, 看到了什么输出? 请写清楚

对了就点个采纳吧,可怜可怜孩子吧

错在:n>2时,sum初始=2,sum=a[i]+2; 改成:sum +=a[i];

#include <iostream>
using namespace std;

int main()
{
	int n;
	cin>>n;
	int *a=new int[n];
	a[0]=a[1]=1;
	int sum=0,i;
	if(n==1)
	{
		sum=1;
	}
	else if(n==2)
	{
		sum=2;
	}
	else
	{
		sum=2;
		for(i=2;i<n;i++)
		{
			a[i]=a[i-1]+a[i-2];
			sum +=a[i];
		}
	}
	
	cout << sum<< endl;
	delete[] a;
	return 0;
}

#include <iostream>

using namespace std;

int main()
{
    int i,n,sum=0;
    cin>>n;
    int a[n];
    a[0]=a[1]=1;
    for(i=2;i<n;i++){
        a[i]=a[i-1]+a[i-2];
       // sum=sum+a[i];在此计算不对,不会得到结果。该步其实是初始化
    }
   for(i=0;i<n;i++)
    sum=sum+a[i];

   }
    cout<<sum;
    return 0;
}