我想出了一个算法,用于在阶乘数系统中找到给定数字的表示。我很难用正式的方式证明它的正确性。以下是Python中的代码(请注意k!= s):
def fns(n):
s = 1
k = 1
while s * (k + 1) <= n:
k = k + 1
s = s * k
while k >= 1:
print(n // s, end = "")
n = n % s
s = s // k
k = k - 1
发布于 2020-12-16 01:50:07
实际上,很难“证明”一个带有"print“语句的程序。最好是将值附加到列表中,然后打印或返回列表,以便。你有一些理由可以反驳。因此,让我们假设您在某处拥有result = []
,并且您的"out +=“语句是result.append(n//s)
所以。您有两个循环,并且需要两个循环不变量。对于第一次查看,您需要显示该s = k!
。对于第二个循环,您需要显示附加了k
零的result
是the_value_of_n_passed_as_an_argument_to_the_function - n
的阶乘表示。这两个都应该是相对简单的。最后,您得到了k == 0
,这意味着result
是n
原始值的阶乘表示。
https://stackoverflow.com/questions/65315399
复制相似问题