gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 13:24:20 26 4
gpt4 key购买 nike

我有一个任务,我们正在执行递归的 a + b 操作。如果这是一个 super 简单的修复,请多多包涵,因为我是新手。最近我一直在犯一些简单的错误,只是没有看到它们。

我们必须使用:

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;

请让我知道我的数学哪里出了问题?!输出是 5 5 5 9 9 9,但它们应该都是 10。谢谢!!!

最佳答案

在我看来,根据作业的描述,您应该按以下方式定义函数。首先你需要在类中再添加一个成员函数

#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 RecursiveAPlusB( int a, int b ) const;

private:
int myValueofA;
int myValueofB;

};

#endif /* Adder_h */

函数定义看起来像

int Adder::RecursiveAPlusB() const
{
return RecursiveAPlusB( getA(), getB() );
}

int Adder::RecursiveAPlusB( int a, int b ) const
{
if ( a == 0 ) return b;
else if ( b == 0 ) return a;
else return 2 + RecursiveAPlusB( a - 1, b - 1 ) ;
}

int Adder::IterativeAPlusB( ) const{
{
int sum = 0;
int a = getA(), b = getB();

for ( ; a != 0 && b != 0; a -= 1, b -=1 )
{
sum += 2;
}

if ( a == 0 ) sum += b;
else sum += a;

return sum;
}

请注意,函数仅在值为非负数的情况下才有效。因此,最好将它们声明为具有 unsigned int 类型。

关于c++ - 递归分配没有给出正确的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33866602/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com