鱼C论坛

 找回密码
 立即注册
查看: 2905|回复: 5

关于递归

[复制链接]
发表于 2015-12-1 09:47:31 | 显示全部楼层 |阅读模式
5鱼币
请问如下代码,不改动现有,在哪儿里给result赋初值能正常运行?

n = int(input("请输入一个整数:"))


def factorial(n):
       
        if n == 1:
                return 1
        else:

                result = n * factorial(n-1)

print ("%d的阶乘等于%d" % (n,result))

最佳答案

查看完整内容

n = int(input("请输入一个整数:")) def factorial(n): if n == 1: return 1 else: return n * factorial(n-1) result = factorial(n) print ("%d的阶乘等于%d" % (n,result)) 把result拿到外面来就好了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-12-1 09:47:32 | 显示全部楼层
n = int(input("请输入一个整数:"))
def factorial(n):
        
        if n == 1:
            return 1
        else:
            return n * factorial(n-1)
result = factorial(n)
print ("%d的阶乘等于%d" % (n,result))
把result拿到外面来就好了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-12-1 10:03:48 | 显示全部楼层
你这程序result是定义在函数体中的,所以执行的时候会说result没有定义

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
birlyjer + 1 + 1

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-12-1 11:06:47 | 显示全部楼层
xiao_xiao 发表于 2015-12-1 10:03
你这程序result是定义在函数体中的,所以执行的时候会说result没有定义


def factorial(n):
    if n==0:
        return 1
    else:
        return n*factorial(n-1)
print('请输入需要求阶乘的数字:')
n=int(input())
print (factorial(n))
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-3-2 21:23:55 | 显示全部楼层
n = int(input("请输入一个整数:"))
def factorial(n):
    if n == 1:
        return 1
    else:

        return n * factorial(n-1)
   
result = factorial(n)
print ("%d的阶乘等于%d" % (n,result))
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-7-20 23:50:36 | 显示全部楼层
xiao_xiao 发表于 2015-12-1 10:03
你这程序result是定义在函数体中的,所以执行的时候会说result没有定义

这里的result直接被赋值了,就是定义本身,所以不会出问题。
在result = n * factorial(n-1)底下加一行:
return result
就能正常运行了。
原代码在n != 1的时候返回值是None,是没法和n进行乘法运算的。会报错。但是不是报result使用前没有定义这个错误。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-18 14:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表