输入一个正整数n(n<=10),计算并输出n!
时间: 2024-05-12 15:19:02 浏览: 19
这道题可以使用递归或循环两种方法求解。
使用递归:
```
def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n-1)
n = int(input())
print(factorial(n))
```
使用循环:
```
n = int(input())
result = 1
for i in range(1, n+1):
result *= i
print(result)
```
两种方法的思路都比较简单,递归的思路是把问题拆分成更小的同类问题,直到最小的问题可以直接求解;循环的思路是从1乘到n,逐个累乘。
相关问题
用matlab输入正整数N(1<=N<=9),输出所有N位水仙花数
好的,这个问题可以使用MATLAB编写一个简单的程序来解决。以下是一个可能的实现:
```
N = input('请输入正整数N(1<=N<=9):');
if N < 1 || N > 9 || floor(N) ~= N
error('N必须是1到9之间的正整数');
end
% 枚举所有N位数
for i = 10^(N-1) : 10^N - 1
% 计算i的每一位数字的N次幂之和
sum = 0;
temp = i;
while temp > 0
digit = mod(temp, 10);
sum = sum + digit^N;
temp = floor(temp/10);
end
% 判断是否为水仙花数
if sum == i
disp(i);
end
end
```
首先,我们让用户输入一个正整数N,并进行输入验证以确保它在1到9之间。然后,我们枚举所有N位数,对于每个数,计算它的每一位数字的N次幂之和,并判断是否等于这个数本身。如果是,我们就输出这个数。这就是所有N位水仙花数的解决方案。
构建n*n乘法表。要求:输入一个正整数n(1<=n<=9),输出n*n乘法表。每个数值占4位。
要构建一个n*n的乘法表,可以使用两个循环,外层循环控制行数,内层循环控制列数。首先,我们需要输入一个正整数n(1<=n<=9),确定表的大小为n*n。
然后,我们可以使用嵌套循环来输出乘法表。外层循环从1到n,表示行数,内层循环也是从1到n,表示列数。每个数值占4位,所以可以使用print函数的格式化输出来保持每个数值占位。
下面是一个代码实现的例子:
```python
n = int(input("请输入一个正整数n(1<=n<=9):"))
# 构建n*n乘法表
for i in range(1, n+1):
for j in range(1, n+1):
print("{:4d}".format(i * j), end='')
print()
```
这段代码中,我们使用了`format`函数和`{:4d}`的格式化输出。其中,`{:4d}`表示输出一个整数,占4位。每次循环计算`i * j`的结果后,使用`format`函数将结果按照4位输出。`end=''`用于控制输出结果不换行。
通过这段代码,我们可以得到一个n*n的乘法表,满足每个数值占4位的要求。这样的乘法表可以帮助我们更直观地了解乘法运算。