Fortran Coder

查看: 1471|回复: 2
打印 上一主题 下一主题

[求助] 递归求n!阶乘

[复制链接]

2

帖子

1

主题

0

精华

新人

F 币
12 元
贡献
5 点
跳转到指定楼层
楼主
发表于 2023-8-5 10:32:25 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
请问为什么一直提示“Variable "n" masks variable in parent scope[行:9,列:18]”?当然不建议在返回单个数字的时候用interface,这段代码只是练习
[Fortran] 纯文本查看 复制代码
program recursive_test
    implicit none

    INTEGER :: n
    interface
      RECURSIVE INTEGER function fact(n) result(ans)
        LOGICAL :: count
        INTEGER :: n
      end function fact
    end interface
    write (*, "('N = ', I3)")
    read (*, *) n
    write (*, "(I3, '! = ', I8)") n, fact(n)

    stop
  end program recursive_test

  RECURSIVE INTEGER function fact(n) result(ans)
    implicit none

    INTEGER :: n
    LOGICAL :: count

    if (n < 0) then
      ans = -999
      count = .false.
      return
    else if (n <= 1) then
      ans = 1
      count = .true.
      return
    end if

    ans = n*fact(n - 1)

    return
  end function fact



分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

2022

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1598 元
贡献
689 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

板凳
发表于 2023-8-6 17:00:56 | 只看该作者
没问题呀,主程序里面有 n,不影响子程序里面有 n 的。你的代码我这里运行毫无问题。

尽管你的代码没有问题,但有一些语句没有必要。帮你注释出来。

[Fortran] 纯文本查看 复制代码
program recursive_test
    implicit none
    INTEGER :: n
    interface
      RECURSIVE INTEGER function fact(n)! result(ans)
        !LOGICAL :: count 不必要
        INTEGER :: n
      end function fact
    end interface
    write (*, "('N = ', I3)")
    read (*, *) n
    write (*, "(I3, '! = ', I8)") n, fact(n)
    ! stop 不必要
  end program recursive_test

  RECURSIVE INTEGER function fact(n) result(ans)
    implicit none
    INTEGER :: n
    !LOGICAL :: count
    if (n < 0) then
      ans = -999
      !count = .false.
      !return
    else if (n <= 1) then
      ans = 1
      !count = .true.
      !return
    else
      ans = n*fact(n - 1)      
    end if
    !return
  end function fact

2

帖子

1

主题

0

精华

新人

F 币
12 元
贡献
5 点
沙发
 楼主| 发表于 2023-8-5 16:54:32 | 只看该作者
找到原因了,主程序有一个叫n的变量,子程序中也有一个,所以会警告但不报错,只要把变量的名字改一下就好了
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-11-23 06:52

Powered by Tencent X3.4

© 2013-2024 Tencent

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