Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于存储在数组中的大整数的加法和乘法的问题。(C)方案编制_C - Fatal编程技术网

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

关于存储在数组中的大整数的加法和乘法的问题。(C)方案编制,c,C,如何递归地添加两个大数字(如千位数) 我将输入作为字符串存储到数组中,并希望使用递归函数添加它们 我理解逻辑,只是不明白如何使用递归添加它们 任何帮助都将不胜感激 我认为有礼貌地加上这是家庭作业。我想你会有一个“数字”数组作为输入:无符号整数a[num\u ints],b[num\u ints] 使用无符号字符a[num_digits]、b[num_digits]并仅在每个字节中存储值0-9可能会更容易。但这在32位机器上是非常浪费的 简单的方法是使输入a,b全局数组,并简单地返回进位信息递归函

如何递归地添加两个大数字(如千位数)

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

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

任何帮助都将不胜感激


我认为有礼貌地加上这是家庭作业。

我想你会有一个“数字”数组作为输入:
无符号整数a[num\u ints],b[num\u ints]

使用
无符号字符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
}
在这里,我对您的arry的持久性进行了大量假设(最重要的“数字”位于
numdigits-1
,最不重要的“数字”位于
0
),并且我假设您希望在最小的sig上操作。首先是数字(即,从右到左,就像我们在学校里被教的那样)


我还没有编译代码,也没有检查它是否正常。它实际上只是一个大纲。

你是说逐位添加数字和执行进位等吗?使用递归添加大数字是个坏主意,它浪费了堆栈上的空间,而且比简单的迭代解决方案要慢。为什么你要递归地做,而不是迭代地做?因为这就是他的家庭作业对Dot说的。这个问题似乎离题了,因为它是关于我们做你的家庭作业,而你却什么都不想做