函数在乘法中返回0
Function returns 0 in karatsuba multiplication
我试图通过递归调用实现Karatsuba乘法。下面的代码应该工作,但我一直得到零作为答案。任何想法吗?
#define ll long long int
ll kmul(ll p, ll q)
{
ll a,b,c,d,ans;
ll n=0;
while(p)
{
p=p/10;
n++;
}
//cout<<n<<endl;
if(n<2)
{
return p*q;
}
else
{
int k=n/2;
ll j=pow(10,k);
a=p/j;
b=p%j;
c=q/(j);
b=q%j;
ans=(pow(10,n)*(kmul(a,c)))+(j*kmul(a,d)*kmul(b,c))+kmul(b,d);
return ans;
}
}
循环结束后:
while(p)
{
p=p/10;
n++;
}
p
的值为0。递归在
if(n<2)
{
return p*q;
}
因此,无论输入是什么,结果都是0。
您可能需要使用p
的副本来计算while
循环中的n
。这样就可以保留p的值。例如:
ll pd = p;
while(pd)
{
pd=pd/10;
n++;
}
相关文章:
- 为什么将值返回函数传递给重载=运算符对运算符函数有效,而对其他运算符无效
- 编译器警告:执行到达值返回函数的末尾而不返回值
- 接收和返回函数指针的函数指针的类型?
- 我的动态链接队列在同一输出流中调用时不正确地输出三个返回函数
- C++函数链返回函数
- 返回函数指针的函数的签名
- 由于值返回函数中的错误,程序无法编译.它说未声明的标识符
- 非常量引用返回函数在常量值返回函数上用作 r 值
- 如何在 C++ 中从 void 返回函数访问变量
- 返回函数中带有 2 个可选 ctor 的对象
- 如何在 c++ 中返回函数的结构向量
- 返回 C++ 函数中的引用
- 使用向量时,当返回函数更改时,无法看到输出
- 如何在递归中使用返回函数
- 返回函数模板的类型C++作为第二个模板参数
- 为什么静态指针返回函数中有一个"静态"键?
- 递归返回函数,在特殊情况下不返回
- 从类返回函数
- 从类成员函数返回函数指针
- 从返回函数中推断不存在的模板参数