【发布时间】:2014-03-24 21:00:18
【问题描述】:
我必须编写一个程序,我必须将十进制系统中的数字转换为另一个数字(以 2 为基数到 9),就像我的第一个问题一样。
但这一次我必须使用递归函数。所以我来了:
function cambiarBase(n,b: integer): string;
Begin
if n < b then
cambiarBase := inttostr(n)
else
cambiarBase := inttostr(n mod b) + cambiarBase(n div b, b);
End;
它需要 2 个整数变量,'n' 是十进制数,'b' 是基数,并返回一个带有转换后的数字的字符串。在按钮过程中,我在 TMemo 中显示数字
memo1.Lines.Add(cambiarBase(n,b));
我遇到的问题是:使用函数的方式以相反的顺序给出数字 (例如,基数 9 中的 301 是 364,但它显示为 463)。但是,如果我在 if 语句之后使用 ReverseString 函数,那么它会以不同的顺序显示数字(在示例中,数字现在是 634)。
但是,如果我在 memo1.Lines.Add(函数外部)应用 ReverseString 函数,那么它会显示正确的转换。
我想知道如何让它通过函数本身返回正确的数字顺序。
程序编译它没有任何错误。
再次感谢您的阅读。
LeoAM
【问题讨论】:
标签: delphi recursion number-systems