我有一个赋值,我们用递归执行a + b操作。如果这是一个非常简单的解决方案,请耐心等待,因为我是新手。最近我一直在制作简单的错误,却没有看到它们。
我们必须使用:
BASE CASE: if ( a == 0 ) return( b ); BASE CASE: if ( b == 0 ) return( a );
RECURSIVE CASE: else return( RecursiveAPlusB( a - 1, b - 1 ) + 2 );
我的标题是:
#ifndef Adder_h
#define Adder_h
#include <iostream>
using namespace std;
class Adder{
public:
Adder( int a, int b );
int getA( ) const;
int getB( ) const;
int RecursiveAPlusB( ) const;
int IterativeAPlusB( ) const;
private:
int myValueofA;
int myValueofB;
};
#endif /* Adder_h */
我的驱动程序是:
#include "Adder.h"
Adder::Adder(int a, int b){
myValueofA = a;
myValueofB = b;
}
int Adder::getA( ) const{
return myValueofA;}
int Adder::getB() const{
return myValueofB;
}
int Adder::IterativeAPlusB( ) const{
if(myValueofA==0)
return myValueofB;
else if(myValueofB==0)
return myValueofA;
else
return RecursiveAPlusB();
}
int Adder::RecursiveAPlusB() const{
return ((myValueofA - 1, myValueofB - 1 ) + 2) ;
}
我的主要是(作业要求):
#include "Adder.h"
#include <iostream>
using namespace std;
int main() {
Adder ten( 6, 4 );
// All these calls should produce the
// exact same answer...
// namely, the number 10!
cout << ten.RecursiveAPlusB( ) << endl;
cout << ten.IterativeAPlusB( ) << endl;
cout << ten.RecursiveAPlusB( ) << endl;
Adder tenagain( 2, 8 );
cout << tenagain.RecursiveAPlusB( ) << endl;
cout << tenagain.IterativeAPlusB( ) << endl;
cout << tenagain.RecursiveAPlusB( ) << endl;
return 0;
}
请告诉我数学出错的地方?!输出是5 5 5 9 9 9,但它们应该都是10.谢谢!!!
答案 0 :(得分:0)
在您的功能中,您使用comma operator
:
int Adder::RecursiveAPlusB() const{
return ((myValueofA - 1, myValueofB - 1 ) + 2) ;
}
(6 - 1, 4 - 1) = 3
的结果。
答案 1 :(得分:0)
一路 - 将RecursiveAPlusB()更改为:
int Adder::RecursiveAPlusB() const
{
return (Adder(myValueofA - 1, myValueofB - 1 ).IterativeAPlusB() + 2) ;
}