关于存储在数组中的大整数的加法和乘法的问题。(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说的。这个问题似乎离题了,因为它是关于我们做你的家庭作业,而你却什么都不想做