用python写0、1、2、3、4、5、6、7组成的七位数所有奇数的代码
时间: 2023-07-04 18:28:37 浏览: 165
可以参考上一个问题的递归实现,在递归基本情况中增加判断奇偶性的条件:
```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)
if n < 7: # 最高位不能是0
generate_odd_numbers(n-1, "0" + s)
generate_odd_numbers(n-1, "2" + s)
generate_odd_numbers(n-1, "4" + s)
generate_odd_numbers(n-1, "6" + s)
generate_odd_numbers(7, "")
```
这个程序会输出所有由 0-7 组成的 7 位数中的奇数。由于在生成每一位数的时候都会生成 8 种可能的数字,因此总共会生成 $8^7=2097152$ 个 7 位数,其中大约一半是奇数。
相关问题
用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组成的所有奇数
可以使用递归实现:
```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`,并将下一位加到前缀中。
阅读全文