我想出了一个算法,用于在阶乘数系统中找到给定数字的表示。我很难用正式的方式证明它的正确性。以下是Python中的代码(请注意k!= s):
def fns(n):
s = 1
k = 1
while s * (k + 1) <= n:
k = k + 1
s = s * k
while k >= 1:
print(n // s, end = "")
n = n % s
s = s // k
k = k - 1
我正在学习Python,在阶乘程序中,我得到了多行输出,而不是单行输出。
我写的程序
num = int (input ("Enter a number: "))
factorial = 1
if num == 0:
print ("The factorial of 0 is 1")
elif num <0:
print ("Error, negative number does not have factorial")
else:
for i in range (2, num +1):
在尝试理解Y-Combinator一个小时后...我最终得到了它,但后来我意识到,没有它也可以实现同样的事情……虽然我不确定我是否完全理解它的目的。
例如:带有Y-组合器的阶乘
print (lambda h: (lambda f:f(f))(lambda f: h(lambda n: f(f)(n))))(lambda g: lambda n: n and n * g(n-1) or 1)(input())
阶乘通过引用另一个lambda中的函数来实现
print (lambda f,m:f(f,m))((lambda g,n: n and n * g(g,n-1) or 1),input(
今天类中关于递归和堆栈溢出的话题很有趣,我想知道是否有任何方法可以增加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
显然,可以迭代地找到更高的阶乘,但是,为了论证和阴谋,最大递归深度是否可以增加?
我编写了一段接受数字并将它们的阶乘输出到控制台的代码。
这一次,我想让它提示用户输入数字,然后警告阶乘。
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,并编写了一个程序,它根据阶乘计算阶乘数。
例如,如果我给程序一个数字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)
#This function should return n!
def factorial(n)
return nil if n < 0
n == 0 ? 1 : n*factorial(n-1)
end
刚开始的时候,这个函数让我大吃一惊,我会这样写这个函数:
def factorial(n)
result = 1
if n == 0
return 1
end
while n > 0
result *= n
n -= 1
end
return result
end
我理解if/else语句的简写。我不明白的是在函数内部
一个数的阶乘是从1到那个数的所有整数的乘积。
例如,6的阶乘是1_2_3_4_5*6 = 720。对于负数不定义阶乘,0的阶乘为1,0!=1。
def recur_factorial(n):
if n == 1:
return n
else:
return n*recur_factorial(n-1)
num = 7
# check if the number is negative
if num < 0:
print("Sorry, factorial does not exist for negative numbers
我是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:
如果不是非负数,我
我正在尝试理解以下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
有人能一步一步地向我解释这个阶乘函数是如何打印出这样的输出的吗?我不明白为什么它会打印所有的阶乘,然后跟着中间语句,因为第一个n=5不匹配n==1,所以它将转到else语句并打印出中间语句。
def factorial(n):
print("factorial has been called with n = " + str(n))
if n == 1:
return 1
else:
res = n * factorial(n-1)
print("intermediate result for ", n, " * factoria
我试图了解下面的C代码在下面是如何工作的:
int factorial(int n) {
int result;
if(n==0){
result=1;
}else{
result = n * factorial(n-1);
}
return result;
}
我知道输出是n的阶乘,我想我试图理解这个递归示例是否使用if语句作为递归的原因。是否也可以使用for循环而不是if来执行递归呢?还是我完全错过了重点?
我想实现阶乘算法,下面的代码给出了阶乘(5)的错误结果。
int factorial(int n)
{
int i = 1, ret = 1;
while(i++<=n)
ret *= i;
return ret;
}
看起来代码即使在i= 6的时候也会继续运行,我不明白为什么while循环没有停止。
我刚刚开始学习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的内置函数得到的答案不一致。请告诉我做错了什么,我相信内置函数的答案必须是正确的。
我的锻炼:
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
我尝试使用递归的概念,但使用for do循环。但是我的程序做不到。例如,如果我想输出4!答案应该是24,但我的输出是12。有人能帮我吗?
program pastYear;
var
n,i:integer;
function calculateFactorial ( A:integer):real;
begin
if A=0 then
calculateFactorial := 1.0
else
for i:= A downto 1 do
begin
j:= A-1;
calculateFactori
我试图使用一个代码来寻找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:整数除法结果对于浮点数来说太大了
我更改了代码,发现一旦
using System;
using System.Collections.Generic;
using System.Linq;
namespace Return
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Factorial(10));
Console.WriteLine(test());
}
private static int Factorial(int fa
我尝试在python中计算泊松分布,如下所示:
p = math.pow(3,idx)
depart = math.exp(-3) * p
depart = depart / math.factorial(idx)
idx范围为0
但是我有OverflowError: long int too large to convert to float
我尝试将depart转换为float,但没有结果。
我刚开始学习Python,遇到了一个在过去的4个小时里一直在尝试的问题。我也认为这个论坛的另一个问题是双重因素,但没有多大帮助。
我想要创建一个函数调用,它以函数对象f和值v作为参数,并返回f(f(v))。例如,如果f是阶乘函数,则双值(f,3)返回(3!)!= 6!= 720。
我所做的更接近这一点,但没有得到一个适当的输出,并遇到了许多错误。
def factorial(n):
num = 1
while n >= 1:
num = num * n
n = n - 1
print(num)
def doublefact(factorial,m):
首先,我必须为我糟糕的英语说声对不起,但我尽力了。
我有一个关于在python中使用递归和异常来比较计算阶乘的速度的练习。
我写了一个代码:
class MyException(Exception):
def __init__(self, value):
self.value = value
def standardFactorial(n):
if n == 1:
return 1
return n * standardFactorial(n-1)
def factorialWithExceptions(n):
if n ==
我最近开始学习python (我的意思是,35分钟前在发布时.)我写了一些东西,比如平方根生成器,阶乘生成器,Fibonacci数生成器,素数检查器等等。在我编写素数检查器之后,我想我应该尝试修改它,这样它就不会检查指定范围内的每个数字,而是接受一个输入,并具体地检查那个输入。
免责声明:如果我在Python上做得更好,那么我只会检查不超过sqrt(p)的数字,我会添加一个选项来检查它是否为偶数,而不是2,然后它会自动返回它不是素数,但让我在运行之前走!:)
代码:
p = input("Enter a potential prime.")
for n in range (2
是否总是可以将递归转换为尾递归?
我很难将下面的Python函数转换为尾递归函数。
def BreakWords(glob):
"""Break a string of characters, glob, into a list of words.
Args:
glob: A string of characters to be broken into words if possible.
Returns:
List of words if glob can be broken down. List can be empty if glo
所以我一直试图在C++中创建一个阶乘函数,它计算一个数字的阶乘。
#include <iostream>
using namespace std;
int factorial(int& x)
{
int b=x-1;
if(x>1)
return(x*=factorial(b));
else
return 1;
}
int main()
{
int a;
cout<<"Enter the number to get factorial (and press enter):\n";
cin>
只是玩一些基本的代码(factorials),但不能完全理解这是如何达到正确的结果的。每个循环的结果似乎并不存储在任何地方-那么代码如何记住迭代值呢?(我知道有模块--这只是一个逻辑练习)
def factoral2(num):
if num == 0:
return 1
return num * factoral2(num - 1)
上面的方法我不太确定它是如何工作的
def factoral(num):
number = []
for i in range(0, num):
number.append(num)
def factorial(x = input("type here: ")):
total = 1
while x>0:
total *= x
x -= 1
return total
print factorial(x)
我正在尝试的是找到一个数字的阶乘,但是我的代码不响应print命令。输入一个数字并按enter后,什么都不会发生。怎么了?