Swift2.0语言教程之函数嵌套调用形式

Swift2.0语言教程之函数嵌套调用形式,第1张

概述Swift2.0语言教程之函数嵌套调用形式 Swift2.0语言函数嵌套调用形式 在Swift中,在函数中还可以调用函数,从而形成嵌套调用。嵌套调用的形式往往有两种:一种是在一个函数中调用其他函数;另一种是在一个函数中调用自身函数。以下将对这两种调用进行详细讲解。 Swift2.0语言嵌套调用基本形式 嵌套调用是指在函数中可以调用其他函数。调用方式如图7.4所示。 图7.4  函数嵌套的形式 【示 Swift2.0语言教程之函数嵌套调用形式 Swift2.0语言函数嵌套调用形式@H_419_6@

在@H_419_6@Swift@H_419_6@中,在函数中还可以调用函数,从而形成嵌套调用。嵌套调用的形式往往有两种:一种是在一个函数中调用其他函数;另一种是在一个函数中调用自身函数。以下将对这两种调用进行详细讲解。@H_419_6@

Swift2.0语言嵌套调用基本形式@H_419_6@

嵌套调用是指在函数中可以调用其他函数。调用方式如图@H_419_6@7.4@H_419_6@所示。@H_419_6@


@H_419_6@

图@H_419_6@7.4@H_419_6@函数嵌套的形式@H_419_6@

【示例@H_419_6@7-25@H_419_6@】以下将使用函数的嵌套调用实现对@H_419_6@s = 22! + 32!@H_419_6@的计算。代码如下:@H_419_6@

import Foundation

func f1(p:Int)->Int{

var k:Int

var r:Int

k=P*p //@H_419_6@求平方@H_419_6@

r=f2(k) //@H_419_6@调用函数@H_419_6@f2()@H_419_6@,计算阶乘@H_419_6@

return r //@H_419_6@获取平方后阶乘的值@H_419_6@

}

//@H_419_6@求阶乘@H_419_6@

func f2(q:Int)->Int{

var c:Int=1

var i:Int

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

c=c*i

}

return c; //@H_419_6@获取阶乘的值@H_419_6@

}

var i:Int

var s:Int=0

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

s=s+f1(i);@H_419_6@

}

print("s=\(s)")

在此代码中,先后先计算@H_419_6@22!@H_419_6@这个数值,即调用@H_419_6@f1()@H_419_6@函数,计算@H_419_6@22@H_419_6@,结果为@H_419_6@4@H_419_6@,然后在调用@H_419_6@f2()@H_419_6@函数,对@H_419_6@4@H_419_6@的阶乘求取,计算完成@H_419_6@22!@H_419_6@后,将结果赋值给@H_419_6@s@H_419_6@,然后再计算@H_419_6@32!@H_419_6@的结果,过程和求@H_419_6@22!@H_419_6@是一样的,最后再将计算的结果与@H_419_6@s@H_419_6@进行相加。运行结果如下所示:@H_419_6@

s=362904@H_419_6@@H_419_6@

Swift2.0语言的递归调用@H_419_6@

递归调用是嵌套调用的一种特殊情况,它也可以被称为递归。它在调用函数的过程中调用了该函数本身。“从前有座山,山上有座庙,庙里有个老和尚在给小和尚讲故事,讲的什么呢?从前有座山,山上有@H_419_6@......@H_419_6@”这是一个典型的递归,可以无限制的循环下去。但是在@H_419_6@Swift@H_419_6@语言中递归必须要有一个满足结束的条件。递归调用的形式如图@H_419_6@7.5@H_419_6@所示。@H_419_6@

图@H_419_6@7.5@H_419_6@递归调用@H_419_6@

【示例@H_419_6@7-26@H_419_6@】以下将通过递归调用实现求第@H_419_6@6@H_419_6@个人的年龄问题。第@H_419_6@6@H_419_6@个人说他比第@H_419_6@5@H_419_6@个人大@H_419_6@3@H_419_6@岁,第@H_419_6@5@H_419_6@个人说他比第@H_419_6@4@H_419_6@个人大@H_419_6@3@H_419_6@岁,第@H_419_6@4@H_419_6@个人说他比第@H_419_6@3@H_419_6@个人大@H_419_6@3@H_419_6@岁,依次类推,到达最后一个人时他说自己是@H_419_6@13@H_419_6@岁。代码如下:@H_419_6@

import Foundation

//@H_419_6@求年龄@H_419_6@

func calculatedage(n:Int)->Int{

var x:Int@H_419_6@

if n==1{@H_419_6@@H_419_6@

x=13@H_419_6@@H_419_6@

}else{@H_419_6@@H_419_6@

x=calculatedage(n-1)+3 //@H_419_6@实现递归@H_419_6@@H_419_6@

}@H_419_6@@H_419_6@

return x@H_419_6@@H_419_6@

}

let age=calculatedage(6)@H_419_6@@H_419_6@

print(age)

它的调用流程如图@H_419_6@7.6@H_419_6@所示。@H_419_6@


@H_419_6@

图@H_419_6@7.6@H_419_6@执行流图@H_419_6@

在当递归调用满足一定条件后结束递归调用,此时@H_419_6@x=13@H_419_6@,即@H_419_6@calculatedage(1)@H_419_6@为@H_419_6@13@H_419_6@;调用@H_419_6@calculatedage(1)+3@H_419_6@实现第@H_419_6@2@H_419_6@个人年龄的计算,@H_419_6@calculatedage(2)@H_419_6@为@H_419_6@16@H_419_6@,依次类型,最后实现@H_419_6@calculatedage(6)@H_419_6@年龄的计算。运行结果如下所示:@H_419_6@

28@H_419_6@@H_419_6@

注意:在编写递归的实现需要注意以下@H_419_6@2@H_419_6@点@H_419_6@

q@H_419_6@@H_419_6@找到正确的递归算法@H_419_6@

q@H_419_6@@H_419_6@要确定递归算法的结束条件,这是决定递归程序是否可以正常结束的关键。@H_419_6@

本文选自:@H_419_6@Swift2.0语言快速入门v3.0大学霸内部资料,转载请注明出处,尊重技术尊重IT人!@H_419_6@

总结

以上是内存溢出为你收集整理的Swift2.0语言教程之函数嵌套调用形式全部内容,希望文章能够帮你解决Swift2.0语言教程之函数嵌套调用形式所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1086350.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存