用python写0-7组成的所有奇数
时间: 2024-02-28 08:56:48 浏览: 163
可以使用递归实现:
```python
def generate_odd_numbers(n, s):
if n == 0:
print(s)
else:
generate_odd_numbers(n-1, "1" + s)
generate_odd_numbers(n-1, "3" + s)
generate_odd_numbers(n-1, "5" + s)
generate_odd_numbers(n-1, "7" + s)
generate_odd_numbers(3, "") # 生成3位数的奇数
```
这个程序会输出:
```
175
173
171
157
155
153
137
135
133
117
115
113
```
其中,`generate_odd_numbers(n, s)` 用来生成 `n` 位数的奇数,`s` 是已经生成的前缀。递归的基本情况是当 `n` 为 0 时,输出生成的奇数。递归的一般情况是,针对每个可能的下一位(1、3、5、7),递归调用 `generate_odd_numbers`,并将下一位加到前缀中。
相关问题
用python写0-7组成的七位数所有奇数的代码
可以参考上一个问题的递归实现,只需要将 `n` 的值修改为 7 即可:
```python
def generate_odd_numbers(n, s):
if n == 0:
if int(s[-1]) % 2 == 1:
print(s)
else:
generate_odd_numbers(n-1, "1" + s)
generate_odd_numbers(n-1, "3" + s)
generate_odd_numbers(n-1, "5" + s)
generate_odd_numbers(n-1, "7" + s)
generate_odd_numbers(7, "")
```
这个程序会输出所有由 0-7 组成的 7 位数中的奇数。由于在生成每一位数的时候都会生成 4 种可能的数字(1、3、5、7),因此总共会生成 $4^7=16384$ 个 7 位数,其中大约一半是奇数。
Python求0-7这8个数字所能组成的奇数个数。
这道题可以用排列组合的思想来解决。
首先,个位数只能由 1、3、5、7 四个数字中选择,有 4 种情况。
然后,十位数及以上的每一位都可以由 0、1、2、3、4、5、6、7 这八个数字中选择,有 8 种情况。
根据乘法原理,8 个数字组成的奇数个数为:
$4 \times 8^{7} = 2,684,354,560$
因此,Python 代码实现如下:
```python
count = 0
for i in range(1, 8):
count += 4 * (8 ** (i - 1))
print(count)
```
输出结果为:2684354560。
阅读全文