题目:给出四个数字(不妨限定在1~10之间),确定这四个数字是否可以通过加减乘除计算为24点。(计算顺序不必按照数字给出的顺序)
算法:24点计算,一定要先选2个数进行运算,得到结果和剩下两个数,一共三个数,再选2个数进行加减乘除,这样一直递归到只剩一个数,判断是不是24即可。
递归函数的参数:数字列表。终止条件:列表中只有一个数,并且此数是24,否则就继续遍历递归,直到遍历完所有的情况退出函数。
给出Python代码如下:
import copy as cp
flag = 0
def F(list1): # 传入的是当前准备处理的三个数
if (len(list1) == 1) and (24 in list1): # 列表中只有一个数为24则改变flag
global flag
flag = 1
elif len(list1) == 1: # 列表中只有一个数但不是24则结束本次循环,不修改flag
return
else:
for i in range(len(list1)): # 对列表中的数遍历
for j in range(len(list1)):
if i == j:
continue
list_1 = cp.deepcopy(list1) # 这四个列表分别用于加减乘除运算
list_2 =