我正在尝试创建一个程序,根据以下算法给出我任意给定数量的最少可能移动的数量,但我似乎没有得到任何地方,因为在某处似乎有无限循环而且我&#39我猜它是我的功能,因为我刚刚开始使用它们
如果有人能解释我做错了什么,我们将不胜感激
这是我的代码:
num = 4
x = 0
def div3(num):
n3 = num / 3
n3 = n3 + n3
num = num - n3
print("DIV3")
return num
def div2(num):
num = num / 2
print("DIV2")
return num
def min1(num):
num = num - 1
print("MIN1")
return num
while num != 0:
if num / 3 % 1 == 0:
div3(num)
x = x + 1
print(x)
elif num / 2 % 1 == 0:
div2(num)
x = x + 1
print(x)
else:
min1(num)
x = x + 1
print(x)
print(x)
答案 0 :(得分:1)
我不确定这段代码应该做什么,但像这样的表达式没有多大意义:
# Makefile.ac for libtestA
lib_LTLIBRARIES = libtestA.la
libtestA_la_SOURCES = Src files
libtestA_la_CPPFLAGS= -I@top_srcdir@/src/test/include (here header files from libs)
libtestA_la_LDFLAGS =
libtestA_la_LIBADD = -lpthread \
../libtestB/libtestB.la
# Makefile.ac for my_app
bin_PROGRAMS = my_app
my_app_SOURCES = my_app.cpp
my_app_CPPFLAGS = -I@top_srcdir@/src/test/include
my_app_LDADD = ../libtestA/libtestA.la
EXTRA_DIST =
# build app command
/bin/bash ../../../libtool --silent --tag=CXX --mode=link g++ -g -O0 -frtti -fexceptions -L/usr/local/lib -o my_app my_app-my_app.o -lexpat -ldl -lpthread -lcrypto ../libtestA/libtestA.la
int除以int 3总是给出一个int,而任何int modulo 1总是为零。
也许你是这个意思?
num / 3 % 1
此外,外部(num / 3.0) % 1 # Also adding parens for clarity.
变量永远不会改变。也许你打算做这样的事情:
num
我建议您将外部代码放在函数中。这有助于澄清外部num = div3(num)
与num
函数中的num
不同。所以你的程序会有这样的结构:
div()
答案 1 :(得分:0)
def div3(num):
n3 = num / 3
n3 = n3 + n3
num = num - n3
print("DIV3")
return num
首先,num不能在函数内部进行更改,因为num的作用域是函数的局部,所以将它作为全局函数并将函数的参数更改为其他变量说" value&# 34;否则本地和全局变量将发生冲突。样品更改
def div3(value):
n3 = value / 3
n3 = n3 + n3
global num
num = value - n3
print("DIV3")
return num
接下来修复循环问题,循环将在第一次迭代后进入无限循环。当num = 2时,循环将变为无穷大,因为num = value - n3
总是给出2,所以它继续执行函数DIV3