Python实现经典案例的多种方法

系统 1775 0

今天给大家看一个经典案例,希望有所帮助

原题是这样的:

假设你要计算幂,就像内置函数pow和运算符**所做的那样。要定义一个数字的整数次幂,有多种方式,但先来看一个简单的定义:power(x, n)(x的n次幂)是将数字x自乘n - 1次的结果,即将n个x相乘的结果。换而言之,power(2, 3)是2自乘两次的结果,即2 × 2 × 2 = 8。

 

方法一: 

            
               1
            
            
              def
            
            
               funa(x, n):

            
            
               2
            
                 res =
            
               x

            
            
               3
            
            
              if
            
             n <
            
               0:

            
            
               4
            
            
              return
            
             -1

            
               5
            
            
              elif
            
             n ==
            
               0:

            
            
               6
            
            
              return
            
             1

            
               7
            
            
              elif
            
             n >
            
               0:

            
            
               8
            
                     n -= 1

            
               9
            
            
              while
            
             n >
            
               0:

            
            
              10
            
                         res *=
            
               x

            
            
              11
            
                         n -= 1

            
              12
            
            
              return
            
            
               res

            
            
              13
            
            
              else
            
            
               :

            
            
              14
            
            
              print
            
            (
            
              "
            
            
              !
            
            
              "
            
            )
          

此方法大多数语言都可以这样写, 代码冗余, 不够精简, 虽然可以实现功能, 但是不够美观

方法二:

            
              1
            
            
              def
            
            
               funb(x, n):

            
            
              2
            
                 result = 1

            
              3
            
            
              for
            
             i 
            
              in
            
            
               range(n):

            
            
              4
            
                     result *=
            
               x

            
            
              5
            
            
              return
            
             result
          

此方法符合python之美

方法三:

            
              1
            
            
              def
            
            
               func(x, n):

            
            
              2
            
            
              if
            
             n ==
            
               0:

            
            
              3
            
            
              return
            
             1

            
              4
            
            
              else
            
            
              :

            
            
              5
            
            
              return
            
             x * func(x, n - 1)
          

此方法为递归, 了解即可

虽然这个例子很简单, 但实现的方法也很多, 每种方式各有优缺点, 所以大家平时可以发散思维, 对于一个问题有多种解决方法

 


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论