1

我正在尝试开放课件 CS106b 作业 1。我遇到了问题 4,它需要使用递归将整数写入字符串转换器。我们不允许使用任何执行整数转换的库函数。

问题是,在每个“递归级别”之后,代码都不会跟踪前一个字符串,因此我无法附加和构建字符串。

 #include <iostream>
 #include <string>
 #include "console.h"
 #include "simpio.h"
 using namespace std;

/* Function prototypes */

string intToString(int n);
int stringToInt(string str);

/* Main program */

int main() {
    // [TODO: fill in the code]
    int n = getInteger("Enter number for conversion to String: ");
    cout<< "Converted to String: "<<intToString(n);
    return 0;
}

//Functions

string intToString(int n){
    double toBeDecomposed = n;
    string convertedToString;
    char ch;
    string tempString;

    if((double)(toBeDecomposed/10) >= 0.1){

        int lastDigit = (int)toBeDecomposed%10;

        toBeDecomposed = (int)(toBeDecomposed/10);

        intToString(toBeDecomposed);

        if (lastDigit == 0) {
            ch = '0';
        }
        else if (lastDigit == 1) {
            ch = '1';
        }
        else if (lastDigit == 2) {
            ch = '2';
        }
        else if (lastDigit == 3) {
            ch = '3';
        }
        else if (lastDigit == 4) {
            ch = '4';
        }
        else if (lastDigit == 5) {
            ch = '5';
        }
        else if (lastDigit == 6) {
            ch = '6';
        }
        else if (lastDigit == 7) {
            ch = '7';
        }
        else if (lastDigit == 8) {
            ch = '8';
        }
        else if (lastDigit == 9) {
            ch = '9';
        }

        tempString = string() + ch;

        convertedToString = convertedToString.append(tempString);

        cout<<convertedToString<<endl;

    }
    cout<<"Returning: "<<convertedToString<<endl;

    return convertedToString;
}

int stringToInt(string str){
    return 0; 
}

我的调试输出显示它只返回最后一位数字:

在此处输入图像描述

谁能建议如何成功附加到字符串ConvertedToString以便我返回整个转换后的整数?

4

2 回答 2

3

您没有对递归函数调用的结果做任何事情。

提示是intToString 返回一个string. 当您调用intToString(toBeDecomposed);.

捕获该返回值并对其进行处理。

于 2012-08-12T04:17:48.677 回答
1

您的 convertToString 变量是一个本地变量,因此每次 intToString 函数调用它都会创建一个新变量,当递归结束并返回时,它会获取最后一个包含最后一位数字的 convertToString。

简单的解决方案是将其设为静态或全局。

于 2012-08-12T04:18:51.433 回答