我正在尝试创建一个处理非常大数字的gcd函数。因此,到目前为止我尝试的任何事情都会导致错误。例如:
protected void Btn_Delete_Click(object sender, EventArgs e)
{
string strName=((LinkButton)sender).CommandArgument.Split(',')[0];
string strDescription=((LinkButton)sender).CommandArgument.Split(',')[1];
}
protected void btnEdit_Click_Click(object sender, EventArgs e)
{
string strName=((LinkButton)sender).CommandArgument.Split(',')[0];
string strDescription=((LinkButton)sender).CommandArgument.Split(',')[1];
}
给了我以下错误:
fun gcd(a : Int.toLarge, b : Int.toLarge): Int.toLarge =
if b = 0
then a
else gcd(b, a mod b)`
有人可以给我一些建议,我的程序的其余部分似乎工作正常。提前谢谢!
答案 0 :(得分:5)
您将Int.toLarge
视为一种类型,但它是一种功能。您正在寻找的类型是 IntInf.int 。无论你输入什么类型的数字,gcd函数看起来都是一样的;但你可能不得不从另一个模块中引用算术运算符。
这是 Int.int 类型的gcd函数:
fun gcd (a, 0) = a
| gcd (a, b) = gcd (b, a - b*(a div b))
由于SML / NJ的算术运算符过载,这里的 IntInf.int :
fun gcd (a, 0) = a : IntInf.int
| gcd (a, b) = gcd (b, a - b*(a div b))