溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么用Python/R語言分別解決金字塔數(shù)求和問題

發(fā)布時間:2022-03-24 11:05:40 來源:億速云 閱讀:134 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“怎么用Python/R語言分別解決金字塔數(shù)求和問題”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

    1、前N階乘求和

    階乘是基斯頓·卡曼(Christian Kramp,1760~1826)于 1808 年發(fā)明的運算符號,是數(shù)學(xué)術(shù)語。

    n!=1∗2∗3∗...∗(n−1)∗n

    或者可以使用遞歸方式定義:

    怎么用Python/R語言分別解決金字塔數(shù)求和問題

    對其前N項階乘求和即是sum(1!+2!+3!+...+n!),有了以上的理論基礎(chǔ),我們一起看看圖解,加強一下理解 !

    1.1 圖解問題

    怎么用Python/R語言分別解決金字塔數(shù)求和問題

    如圖,如果要輸出每一個值 ,可以嵌入循環(huán)的思想,每一次將前一個值進行乘法運算即可!

    1.2 算法流程

    怎么用Python/R語言分別解決金字塔數(shù)求和問題

    在此可以看到 ,我們需要加以人工控制需要算前多少項。在循環(huán)體內(nèi),這是對階乘數(shù)的累加和賦值。

    1.3 代碼實現(xiàn)

    1.3.1 python代碼實現(xiàn)

    n = int(input("n = "))
    s = 0
    t = 1
    for i in range(1,n+1):
        t*=i
        s+=t
    print ("前{}階乘的和是:{}" .format(n,s))

    怎么用Python/R語言分別解決金字塔數(shù)求和問題

    1.3.2 R語言代碼實現(xiàn)

    factorial <- function(n){
      n <<-  as.integer(readline("請輸入需要階乘個數(shù)(從 1 開始):"))
      fac = 1
      ans = 0
      for (i in 1:n) {
        fac = fac * i
        ans = ans + fac 
      }
      return(ans)
    }
    test_3 <- function(){
      print("前n階乘之和為:")
      factorial(n)
    }
    test_3()

    怎么用Python/R語言分別解決金字塔數(shù)求和問題

    1.4實驗小結(jié)

    這個實驗核心的點是循環(huán)的使用;

    至于R代碼部分均使用函數(shù)的形式進行包裝方便理解;函數(shù)內(nèi)部采用互動的方式,便于拓展使用。有需要了解的留言或私信。

    2、金字塔數(shù)求和運算

    此處的金字塔是真金字塔;就按簡單的金字塔形狀的數(shù)字:

    怎么用Python/R語言分別解決金字塔數(shù)求和問題

    求s=a+aa+aa+aaa+aa...a的值,其中 a 是一個數(shù)字。例如:

    2+22+222+2222+22222

     (此時共 有 5 個數(shù)相加),幾個數(shù)相加由鍵盤控制。

    2.1 圖解問題

    怎么用Python/R語言分別解決金字塔數(shù)求和問題

    通過對每一層金字塔數(shù)的拆解,即可得到如下的通項公式:

    怎么用Python/R語言分別解決金字塔數(shù)求和問題

    這樣問題不久又解決了嗎?與上面的前n項階乘求和一樣,使用循環(huán)求出每一層數(shù),然后求和。

    2.2 算法流程

    怎么用Python/R語言分別解決金字塔數(shù)求和問題

    與上面實驗基本沒有差異;主要是循環(huán)體的算法不同而已。此處不做講解了。

    2.3 代碼實現(xiàn)

    2.3.1 python代碼

    a = int(input("請輸入需要a的值:"))
    n = int(input("請輸入需要n的值:"))
    
    Fn = 0
    pyr = []
    
    for i in range(n):
        Fn = Fn + a
        a = a*10
        pyr.append(Fn)
        print(Fn)
    print("前{}個數(shù)的和為:{}".format(n, sum(pyr)))

    怎么用Python/R語言分別解決金字塔數(shù)求和問題

    2.3.2 R語言代碼實現(xiàn)

    sum_pyr <- function(){
      
      a <- as.integer(readline("請輸入a的值:"))
      n <- as.integer(readline("請輸入n的值:"))
      
      Fn <- 0
      pyr <- c()
      
      for (i in 1:n) {
        Fn <- Fn + a
        a <- a * 10
        pyr[i] <- Fn
        print(Fn)
      }
      
      ans <<- sum(pyr)
      
    }
    test_4 <- function(){
      print("金字塔為:")
      sum_pyr()
      print("求和結(jié)果為:")
      ans
    }
    test_4()

    怎么用Python/R語言分別解決金字塔數(shù)求和問題

    “怎么用Python/R語言分別解決金字塔數(shù)求和問題”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI