程序没有按照要求进行输出,不知道哪里有bug。请给出一个解决方案

问题描述:

img
#include
using namespace std;
int odd(int o);
int even(int e);
int function(int a,int b,int i,int j);
int a,b,i,j;
int main(){
cout<<"Please enter the following four positive integers in order. They will be assigned to a, b, I, and j"<<endl;
cin>>a>>b>>i>>j;
function(a,b,i,j);
cout<<function(a,b,i,j)<<endl;
}
int function(int a,int b,int i,int j) {
int add=0,ans= 0;
if(i>2) {
for (; i < j; i++) {
if (i % 2 == 0) {
ans = even(i);
}
else if (i % 2 == 1){
ans = odd(i);
}
}
add =ans+add;
}
else if(i==1){
add=a;
}
else if(i==2){
add=b;
}
return add;
}
int odd(int o){
int res1=a;
if(o<=2){
res1=a;
}
else{
res1=even(o-1)+o*odd(o-2);}
return res1;
}
int even(int e) {
int res2=b;
if (e <= 2) {
res2 = b;
}
else {
res2 = e * odd(e - 1) - even(e - 2);
}
return res2;
}

这是一个递归函数啊

int fun(int a,int b,int n)
{
  if(n<0)
    return 0;
  if(n==1)
    return a;
  if(n==2)
    return b;
  if(n%2 == 0)
      return n*fun(n-1)-fun(n-2);
  return fun(n-1)+n*fun(n-2);
}

void main()
{
  int a,b,i,j;
  scanf("%d %d %d %d",&a,&b,&i,&j);
  int sum = 0;
  for(int k=i+1;k<j;k++)
    sum += fun(k);
  printf("总和为:%d",sum);
}

这个用if 直接分段就能做出来啦。

代码修改如下:

#include <iostream>
using namespace std;
//第N项的值
int function(int a,int b,int n )
{
    if(n == 1)
        return a;
    else if(n ==2)
        return b;
    else 
    {
        if(n%2 == 0)
            return n*function(a,b,n-1) - function(a,b,n-2);
        else
            return function(a,b,n-1) + n* function(a,b,n-2);
    }
}

int main()
{
    int a,b,i,j;
    int sum = 0;
    cin >> a >> b >> i >> j;
    for (i+=1;i<j;i++) //不包含第i和第j项
    {
        sum += function(a,b,i);
    }
    cout << sum << endl;
    return 0;
}