gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 20:39:08 25 4
gpt4 key购买 nike

如何递归地添加 2 个大数(例如一千位大数)?

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

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

任何帮助将不胜感激。

我认为补充这是家庭作业也是有礼貌的。

最佳答案

我想您将有一个用于输入的“数字”数组: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 上进行操作。首先是数字(即从右到左,就像我们在学校教的那样)。

我还没有编译代码或对其进行健全性检查。这实际上只是一个轮廓。

关于c - 关于数组中存储的大整数的加法和乘法问题。 (C语言编程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27435379/

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