以下是使用面向对象方式编写的一个求阶乘的代码:
创新互联公司-专业网站定制、快速模板网站建设、高性价比乐平网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式乐平网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖乐平地区。费用合理售后完善,10多年实体公司更值得信赖。
# coding=gbk
class Fun():
def fac(self,num):
if num0:
return num * self.fac(num-1)
else:
return 1
if __name__ == '__main__':
obj = Fun()
result = obj.fac(10)
print(result)
是用C语言么?我用递归调用帮你写个
#include stdio.h
void main()
{
int fac(int n);
int a;
float b;
prinf("input an integer number:")
scanf(%d,a)
b=fac(a)
prinf("%d!=%10.0f\n",a,b)
}
int fac(int n)
{float f;
if(n0)
{prinf("n0,dataerror!")
}
else
if(n==0||n==1)
f=1;
else
f=fac(n-1)*n:
return(f);
}
n0是一个逻辑表达式,其值: True 或 False; 在python中False可视为0, True可视为1;
于是, [1,0][n0] :
当n=0时(False), 取[1,0]的第零个元素:1,
当n0时(True), 取[1, 0]的第一个元素: 0;
1为True, 0为False; 因此当n=0时, 该匿名函数返回的就是1,当n0时, 返回的是fac(n-1)*n的值
这个匿名函数等价于: 1 if n=0 else (fac(n-1)*n)
不考虑效率的话,因数和就直接用所有小于x的正整数试商即可,因此,可以写成: