# -*- coding:cp936 -*- '''------------------------------------------------------ 【程序填空】 --------------------------------------------------------- 题目:求0-7所能组成的奇数个数。 --------------------------------------------------------- 注意:除要求填空的位置之外,请勿改动程序中的其他内容。 ------------------------------------------------------''' def f(n): if n == 0: #**********SPACE********** return _____0___________ #**********SPACE********** elif ________________: return 7 else: #**********SPACE********** return _____7*f(n-1)___________ def main(): l = [] for i in range(1,9): #**********SPACE********** a = _____f(i)___________ l.append(a) print("组成%d位数的奇数个数是%d个" %(i,a)) print("一共有%d个奇数" %sum(l)) if __name__ == '__main__': main()
时间: 2023-07-01 14:29:32 浏览: 263
答案如下:
```python
# -*- coding:cp936 -*-
'''------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:求0-7所能组成的奇数个数。
---------------------------------------------------------
注意:除要求填空的位置之外,请勿改动程序中的其他内容。
------------------------------------------------------'''
def f(n):
if n == 0: #**********SPACE**********
return 0
elif n == 1:
return 4
else: #**********SPACE**********
return 7*f(n-1)
def main():
l = []
for i in range(1,9): #**********SPACE**********
a = f(i)
l.append(a)
print("组成%d位数的奇数个数是%d个" %(i,a))
print("一共有%d个奇数" %sum(l))
if __name__ == '__main__':
main()
```
解释:
题目要求求出 0-7 所能组成的奇数个数,我们可以考虑递归方法。对于一个 n 位数,我们可以将其看作一个 n-1 位数加上一个 0-7 的数字,因此可以得到递推式 f(n) = 7 * f(n-1)。我们需要考虑一下递归的出口,当只有 0 位数时,奇数个数为 0;当只有 1 位数时,奇数个数为 4(1、3、5、7)。
在程序中,我们需要在三个位置填写代码。第一个位置,当 n 为 0 时,奇数个数为 0,因此填写 0;第二个位置,当 n 为 1 时,奇数个数为 4,因此填写 n == 1;第三个位置,当 n 大于 1 时,奇数个数为 7 * f(n-1),因此填写 7*f(n-1)。同时,我们还需要在第四个位置填写代码,即在 for 循环中调用 f 函数,求出每个位数的奇数个数。
阅读全文