C++ 如何使用递归解决这个问题?

C++ 如何使用递归解决这个问题?,c++,recursion,C++,Recursion,我的函数必须能够打印数字1+1+1的总和。。。。要获得N,我只能输入N。例如,sumRecursion(6):1+1+1+1+1=6。 这就是我所拥有的 int sumaRecursiva(int y) { int x=0; if (x == y){ return y; } else { x += 1; cout << x << "+" <

我的函数必须能够打印数字1+1+1的总和。。。。要获得N,我只能输入N。例如,sumRecursion(6):1+1+1+1+1=6。 这就是我所拥有的

int sumaRecursiva(int y) {
    
    int x=0;
    if (x == y){
        return y;
    }
    else {
        
        x += 1;
        cout << x << "+" <<endl;
        sumaRecursiva(y-1);
    }
    
}
int sumaRecursiva(int y){
int x=0;
如果(x==y){
返回y;
}
否则{
x+=1;

cout递归函数应该返回一个值。
传递给递归的值通常用于测试转义条件(通常不作为结果的一部分使用)


您可能需要另一个函数来处理打印中所需的
+
字符少于所需的
1
s这一事实

void printSum(int y) {
  if (y == 0) return;
  cout << 1;
  printPlusRecursive(y - 1);   
}

void printPlusRecursive(int y) {
  if (y == 0) return;
  cout << '+' << 1;
  printPlusRecursive(y - 1);
}

void打印和(整数y){
如果(y==0)返回;

cout如果您希望输出正好是
1+1+1+1+1+1=6
,那么您需要一个辅助函数sumaRecursivaHelper来打印
1+
,外部函数来打印
=n
,我相信其他答案都不包括

#include <iostream>

using namespace std;


void sumaRecursivaHelper(int x) {
  if (x == 0) {
      cout << 1;
  }
  else {
      cout << "1+";
      sumaRecursivaHelper(x - 1);
  }
}

void sumaRecursiva(int x) {
  if (x == 0) {
      cout << 0;
  }
  else {
      sumaRecursivaHelper(x); 
  }
  cout << "=" << x;
}

int main()
{
    sumaRecursiva(6);
    return 0;
}
#包括
使用名称空间std;
无效sumaRecursivaHelper(整数x){
如果(x==0){

难道你不想打印序列,还是只想返回和?如果你只想得到和,就不需要递归。
void printSum(int y, bool firstCall = true) {
  if (y == 0) return;
  if (firstCall) cout << 1;
  else cout << '+' << 1;
  printSum(y - 1, false);   
}
#include <iostream>

using namespace std;


void sumaRecursivaHelper(int x) {
  if (x == 0) {
      cout << 1;
  }
  else {
      cout << "1+";
      sumaRecursivaHelper(x - 1);
  }
}

void sumaRecursiva(int x) {
  if (x == 0) {
      cout << 0;
  }
  else {
      sumaRecursivaHelper(x); 
  }
  cout << "=" << x;
}

int main()
{
    sumaRecursiva(6);
    return 0;
}