Swift2.0語言教程之函數嵌套調用形式

Swift2.0語言教程之函數嵌套調用形式

Swift2.0語言函數嵌套調用形式

Swift中,在函數中還能夠調用函數,從而造成嵌套調用。嵌套調用的形式每每有兩種:一種是在一個函數中調用其餘函數;另外一種是在一個函數中調用自身函數。如下將對這兩種調用進行詳細講解。算法

Swift2.0語言嵌套調用基本形式

嵌套調用是指在函數中能夠調用其餘函數。調用方式如圖7.4所示。函數

7.4  函數嵌套的形式spa

【示例7-25】如下將使用函數的嵌套調用實現對s = 22! + 32!的計算。代碼以下:orm

  • import Foundation教程

  • func f1(p:Int)->Int{遞歸

  •     var k:Intit

  •     var r:Intio

  •     k=p*p                                                                                             //求平方入門

  •     r=f2(k)                                                                                 //調用函數f2(),計算階乘import

  •     return r                                                                                 //獲取平方後階乘的值

  • }

  • //求階乘

  • func f2(q:Int)->Int{

  •     var c:Int=1

  •     var i:Int

  •     for i=1;i<=q;++i{

  •         c=c*i

  •     }

  •     return c;                                                                                //獲取階乘的值

  • }

  • var i:Int

  • var s:Int=0

  • for i=2;i<=3;i++ {

  •     s=s+f1(i);

  • }

  • print("s=\(s)")

在此代碼中,前後先計算22!這個數值,即調用f1()函數,計算22,結果爲4,而後在調用f2()函數,對4的階乘求取,計算完成22!後,將結果賦值給s,而後再計算32!的結果,過程和求22!是同樣的,最後再將計算的結果與s進行相加。運行結果以下所示:

  • s=362904

Swift2.0語言的遞歸調用

遞歸調用是嵌套調用的一種特殊狀況,它也能夠被稱爲遞歸。它在調用函數的過程當中調用了該函數自己。「從前有座山,山上有座廟,廟裏有個老和尚在給小和尚講故事,講的什麼呢?從前有座山,山上有......」這是一個典型的遞歸,能夠無限制的循環下去。可是在Swift語言中遞歸必需要有一個知足結束的條件。遞歸調用的形式如圖7.5所示。

7.5  遞歸調用

【示例7-26】如下將經過遞歸調用實現求第6我的的年齡問題。第6我的說他比第5我的大3歲,第5我的說他比第4我的大3歲,第4我的說他比第3我的大3歲,依次類推,到達最後一我的時他說本身是13歲。代碼以下:

  • import Foundation

  • //求年齡

  • func calculatedage(n:Int)->Int{

  •     var x:Int

  •     if n==1{

  •         x=13

  •     }else{

  •         x=calculatedage(n-1)+3                                                                      //實現遞歸

  •     }

  •     return x

  • }

  • let age=calculatedage(6)

  • print(age)

它的調用流程如圖7.6所示。

7.6  執行流圖

在當遞歸調用知足必定條件後結束遞歸調用,此時x=13,即calculatedage(1)13;調用calculatedage(1)+3實現第2我的年齡的計算,calculatedage(2)16,依次類型,最後實現calculatedage(6)年齡的計算。運行結果以下所示:

  • 28

注意:在編寫遞歸的實現須要注意如下2

  • q  找到正確的遞歸算法

  • q  要肯定遞歸算法的結束條件,這是決定遞歸程序是否能夠正常結束的關鍵。

本文選自:Swift2.0語言快速入門v3.0 大學霸內部資料,轉載請註明出處,尊重技術尊重IT人!

相關文章
相關標籤/搜索