【发布时间】:2019-01-17 08:52:56
【问题描述】:
我正在寻找一种方法来递归地乘以两个数字的数字(不一定具有相同的数字长度),而无需以下列方式使用循环: 假设数字是 123 和 567。我正在想办法打印:
5
6
7
10
12
14
15
18
21
它是第一个数字的最左边的数字乘以第二个数字的每个数字,从左边开始并在最右边移动。
函数必须适合原型:
void multi(int a, int b);
我已经设法从那里递归地跳到 1 和 5 到 1 56 和 1 567,并且在每次调用中我都会打印 a%10 * b%10 的结果。 但是当回溯到 12 567 时,函数又会跳到 1 567。
这是我最好的尝试:
int main()
{
int a, b;
scanf("%d %d", &a, &b);
multi(a, b);
return 0;
}
void multi(int a, int b)
{
if (a == 0)
return;
multi(a / 10, b);
if(b /10 != 0)
multi(a, b / 10);
printf("%d\n", a % 10 * b % 10);
}
限制列表:
no loops
single function
mandatory prototype
【问题讨论】:
-
请同时发布您尝试的代码。
-
哪种语言
c或c++ -
@c360 您使用 C 或 C++ 编写代码。您使用的是 C 编译器还是 C++ 编译器?相应地调整问题标签。并发布您迄今为止的尝试。
-
@c360 在 SO 上,习惯上每个问题询问一种语言。
-
@pmg 这不符合函数原型?