程序没有按照要求进行输出,不知道哪里有bug。请给出一个解决方案
#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;
}