我刚刚开始学习python,并编写了一个程序,它根据阶乘计算阶乘数。
例如,如果我给程序一个数字120,它会告诉我它的阶乘是5
无论如何,我的问题是如何让这段代码更高效、更快。
Num = int(input())
i=0
for i in range(0,Num):
i = i + 1
x = Num/i
Num = x
if (x==1):
print(i)
我知道这是个愚蠢的问题,但我试图掌握Python中OOP的概念。假设我想用过程性形式编写阶乘程序,我会这样做
def factorial(n):
num = 1
while n >= 1:
num = num * n
n = n - 1
return num
f = factorial(3)
print f # 6
现在我想用面向对象的方式重写同样的阶乘程序。我不知道如何使用对象和类来编写相同的函数。
class Factorial():
def fact(n):
num = 1
while
这是一个问题:编写一段python代码来查找所有小于50,000的整数,这些整数等于它们的数字的阶乘和。例如:数字7666 6= 7!+ 6!+ 6!+ 6!但是145=1!+4!+5!
注意:我不允许使用任何特定的阶乘函数。
我的解决方案是:
import math
from numpy import *
for i in range(5):
for j in range(10):
for k in range(10):
for l in range(10):
for m in range(10):
可能重复:
我需要用python编写一个返回N!的程序,而不用阶乘函数。到目前为止,我已经编写了一个程序,但是我一直收到一个错误:local variable "fact" is assigned but never used。在分配fact = 1之后,如何使用它?
from pylab import *
def factorial(n):
fact = 1
for i in range(n):
print("i = ", i)
fact = fact * i
print("The factorial of
今天类中关于递归和堆栈溢出的话题很有趣,我想知道是否有任何方法可以增加Python中的最大递归深度?写了一个使用递归找到n的阶乘的快速函数:
def factorial(n):
if n == 1:
return n
else:
return n * factorial(n-1)
它可以处理阶乘(994),但不能处理阶乘(995)。给出的错误是:
RuntimeError: maximum recursion depth exceeded in comparison
显然,可以迭代地找到更高的阶乘,但是,为了论证和阴谋,最大递归深度是否可以增加?
我是python的新手,正在学习面向对象编程的基础知识。我想通过创建一个类来做一个阶乘计算器。这是我到目前为止的代码:
class Factorial:
def __init__(self, number):
self.number = number
def factorial(self):
n = 1
while number >= 1:
n = n * number
number = number - 1
return n
num1 = Factoria
我尝试编写一个递归方法,它将所有阶乘的值从0求和到输入数字,并以双倍的形式返回结果。我使用递归阶乘方法来计算各个阶乘。但我不明白如何使所有阶乘递归方法之和的方法使用两个递归,而不是一个递归和for循环。
这是密码!
public static int factorial(int numberinput) {
if (numberinput == 0)
return 1;
else
return (numberinput*factorial(numberinput-1));
}
public static double sum(int num
我已经写了一个阶乘程序,当我在命令行模式下执行完整的程序时,它工作得很好。当我用.py文件编写程序并试图执行时,当我调用该文件时,如下所示
>> python factorial.py
我搞错了
def factorial(n):
if n==1 :
return n
else :
res = n*factorial(n-1)
return res
print("Enter a number")
val = input()
factorial(val)
我已经尝试创建一个函数,它接受一个非负整数n的阶乘。这个部分工作得很好,但是如果输入小于0或大于12,我也必须创建一个ValueError,这是可行的。
def factorial(n):
countdown = n
factorial_sum = 1
while True:
try:
if n == 0:
return 1
if n < 0 or n > 12:
raise ValueError
except V
#我在为这个问题编写代码时遇到了困难,我不断地出错,我不知道问题是什么,因为我只是在学习Python。
计算两个数组合的函数
def comb(n, k):
sum1 = 1
for i in range(1, n + 1):
sum1 = sum1 * i
if sum1 == 0:
sum1 = 1
sum2 = 1
for j in range(1, k + 1):
sum2 = sum2 * j
if sum2 == 0:
return 1
如果一个数的各个数字的阶乘和等于该数本身,则该数是强数。例如: 145 = 1!+ 4!+5!
为此,我用python编写了以下代码:
import math
def strong_num():
return [x for x in range(1,1000) if x==int(reduce(lambda p,q:math.factorial(int(p))+math.factorial(int(q)),str(x)))]
print strong_num()
但是解释器再也不回来了??这段代码有什么问题?
我是Python的新手,目前正在阅读Python 3,面向绝对初学者,并面临以下问题。
我想用程序计算阶乘。
请求用户输入非负数n
然后使用for循环计算阶乘。
守则是这样的:
N = input("Please input factorial you would like to calculate: ")
ans = 1
for i in range(1,N+1,1):
ans = ans*i
print(ans)
虽然我想增加一个功能,以检查输入数字N是否为非负数。像这样:
if N != int(N) and N < 0:
如果不是非负数,我
我对C++有点陌生,我正在尝试编写一个递归的阶乘计算器。我确实写过,但它给了20、21、22、33、40等条目多个负值。尽管我尝试使用长int,但代码无法计算大于65的整数的阶乘。有人能解释一下为什么会发生这种事吗?我在python上没有任何问题。为什么它发生在c++?
这是我的代码:
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
long long int factorial(long int n) {
long long i
我编写了一段接受数字并将它们的阶乘输出到控制台的代码。
这一次,我想让它提示用户输入数字,然后警告阶乘。
var x = prompt("Input the number" );
var y=1;
function factorial(x) {
for(i=2; i<=x; i++) {
y *= i;
}
console.log(y);
}
alert(factorial(x));
我正在尝试理解以下Python函数:
def factorial(i):
if not hasattr(factorial, 'lstFactorial'):
factorial.lstFactorial = [None] * 1000
if factorial.lstFactorial[i] is None:
iProduct = 1
for iFactor in xrange(1, i+1):
iProduct *= iFactor
factorial.lstFactor
我刚刚开始学习Python。我必须使用Python3.7。有没有人可以给我看一个有效的阶乘代码?我尝试了一些我在这里找到的,但我总是得到这样的错误:
=================== RESTART: C:\programozás\pytutorial.py ===================
代码:
def factorial(n):
result = 1
for i in range(1, n + 1):
result *= i
return result
对不起,如果这似乎是一个愚蠢的问题,但我有点困惑,因为我想要完成的Python 2练习。
该练习要求编写一段代码,以找到数字的阶乘。
我编写了一个函数来实现这个功能,但是我对预先设置的打印函数感到困惑,它要求用户输入,因为我只把它看作是一件单独的事情。谁能帮我弄清楚如何使这项工作,请在练习要求打印功能不被删除。
提前谢谢你!
def FirstFactorial(num):
# code goes here
fact = 1
while num > 0:
fact *= num
num -= 1
return fact
x = raw_input(
我编写了用于循环迭代的python,如下所示。我想知道是否有可能将其转换为递归函数。
a = int(input("Please enter the first number: "))
b = int(input("Please enter the second number: "))
res = 0
for i in range(a,b+1):
temp = 1
for j in range(1,i+1):
temp = temp * j
res = res + temp
我曾经问过一个类似的问题,但这个问题有点不同。以下是我的锻炼。我得到的答案与我通过使用python的内置函数得到的答案不一致。请告诉我做错了什么,我相信内置函数的答案必须是正确的。
我的锻炼:
def fact_cum(n):
f = 1
for x in range(1, n +1):
f *= x
print f
fact_cum(1000)
Python的内置函数:
import math
def cumFact():
x = sum(math.factorial(f) for f in range(1000))
print
我知道如何为数字的阶乘编写函数,但我不确定它为什么有效。
def factorial (num):
ans = 1
for i in range (1,num + 1):
ans *= i
return (ans)
在我看来,ans保持为1,并且乘以1到nums +1上的每个索引。所以它看起来像这样:(1 * 1,1* 2,1* 3,...)。这个函数是如何得到参数中数字的阶乘的?
我正在尝试编写一个方法来决定一个整数是否是好奇的(它等于其数字的阶乘之和)。
我写了一个阶乘方法。
public int factorial(int n)
{
if (n==0) return 1;
else return n*factorial(n-1);
}
然后,如果数字是好奇的,则返回true的另一个方法。
public boolean isCurious(int y)
{
String converted = String.valueOf(y);
int sum = 0; //sum of factorials
for(int i=0; i&l
我试图使用一个代码来寻找Wilson Primes的一些乐趣,并使我回到编码的摇摆,然而,我发现当我试图除以172!+1乘以173,它会给我一个溢出错误。下面是我使用的代码:
import math
x = 2
while x < 1000:
if math.factorial(x-1) + 1 % x == 0 and (math.factorial(x-1) + 1 / 5) % x == 0 :
print(x)
x += 1
我跑步的时候给了我:
5
13
OverflowError:整数除法结果对于浮点数来说太大了
我更改了代码,发现一旦