关于存储在数组中的大整数的加法和乘法的问题。 (C编程)

时间:2014-12-12 01:17:17

标签: c

如何递归添加2个大数字(如千位数)?

我将输入作为字符串存储到数组中,我想使用递归函数添加它们。

我理解逻辑,我只是​​不明白如何使用递归添加它们。

非常感谢任何帮助。

我认为添加这是家庭作业也是礼貌的。

1 个答案:

答案 0 :(得分:0)

我想你会有一组数字'对于输入:unsigned int a[num_ints], b[num_ints]

您可能更容易使用unsigned char a[num_digits], b[num_digits]并仅在每个字节中存储值0-9。但这在32位机器上非常浪费。

简单的方法是使您的输入a,b全局数组并简单地返回进位信息递归函数。

然后你可以这样做:

void *recursive_op(unsigned char *ptr){
    carry_t *carry_info = recursive_op(ptr-1));
    //do something with the carry_info
}

unsigned char result[num_digits];
unsigned char a[num_digits];
unsigned char b[num_digits];

int main(int argc, char** argv){
    //initialise a and b...
    //memset result to zeros...

    unsigned char *ptr = &result[num_digits-1];
    carry_t *carry_info = recursive_op(ptr);

    //do something to result[0] with your carry_info ptr
}

在这里,我假设您的结果有很多内容(最重要的数字'位于numdigits-1,最不重要的数字'是0)而我假设你想在最少的sig上操作。首先是数字(即从右到左,就像我们在学校的教学方式一样)。

我还没有编译代码或理智检查它。它只是一个大纲。