递归分配没有给出正确的输出

时间:2015-11-23 08:36:45

标签: c++ recursion iteration

我有一个赋值,我们用递归执行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 );
  1. 我的标题是:

    #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 */
    
  2. 我的驱动程序是:

    #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) ;
    }
    
  3. 我的主要是(作业要求):

    #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;
    

    }

  4. 请告诉我数学出错的地方?!输出是5 5 5 9 9 9,但它们应该都是10.谢谢!!!

2 个答案:

答案 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) ;
}