如何递归添加2个大数字(如千位数)?
我将输入作为字符串存储到数组中,我想使用递归函数添加它们。
我理解逻辑,我只是不明白如何使用递归添加它们。
非常感谢任何帮助。
我认为添加这是家庭作业也是礼貌的。
答案 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上操作。首先是数字(即从右到左,就像我们在学校的教学方式一样)。
我还没有编译代码或理智检查它。它只是一个大纲。