在 Swift 中不使用 sqrt 进行生根
Rooting without using sqrt in Swift
我试图在不使用 sqrt() 方法的情况下进行生根 Swift 练习。
我的想法如下:
import Foundation
func rooting(number:Int) -> Int {
for i in 1...100 {
if i * i == number {
var Root = i
break }
return Root //here
}
return Root //here
}
print(rooting(number:9))
但是在我为您留下评论的那几行,我得到 Cannot find 'Root' in scope
错误。当我尝试在 运行 函数之前将 root 初始化为整数时,该函数要么使用我初始化 Root 变量的值,要么在我尝试将其初始化为可选整数或空数组时出现一些错误.
我这里的想法有什么问题吗?
好的,这是我对齐后的代码。
import Foundation
func rooting(number: Int) -> Int {
for i in 1...100 {
if i * i == number {
var Root = i
break
}
return Root
}
return Root
}
print(rooting(number: 9))
问题是您在尝试使用变量之前结束的范围内创建 Root
变量。本质上,Root
变量仅存在于以下段中:
import Foundation
func rooting(number: Int) -> Int {
for i in 1...100 {
if i * i == number {
var Root = I //Root variable starts existing
break
} //Root variable no longer exists
return Root
}
return Root
}
print(rooting(number: 9))
这是因为它 范围 到 if
语句。要解决这个 特定的 问题,您可以将代码更改为:
import Foundation
func rooting(number: Int) -> Int {
for i in 1...100 {
if i * i == number {
return i
}
}
}
print(rooting(number: 9))
因为除了 return 之外,您没有对 Root
做任何事情。当然,这仍然行不通,因为你不能保证 return 任何东西(如果 number
是 8 怎么办?),而且你说函数总是 return 一个Int
.
这是一个实现生根功能的简单示例:
import Foundation
func rooting(number: Int) -> Int? {
guard number > 0 else { return nil }
for i in 0...(number/2) {
if i * i == number {
return i
}
}
return nil
}
print(rooting(number: 9))
如果数字有平方根,它将被return计算;否则,函数 returns nil
.
我试图在不使用 sqrt() 方法的情况下进行生根 Swift 练习。
我的想法如下:
import Foundation
func rooting(number:Int) -> Int {
for i in 1...100 {
if i * i == number {
var Root = i
break }
return Root //here
}
return Root //here
}
print(rooting(number:9))
但是在我为您留下评论的那几行,我得到 Cannot find 'Root' in scope
错误。当我尝试在 运行 函数之前将 root 初始化为整数时,该函数要么使用我初始化 Root 变量的值,要么在我尝试将其初始化为可选整数或空数组时出现一些错误.
我这里的想法有什么问题吗?
好的,这是我对齐后的代码。
import Foundation
func rooting(number: Int) -> Int {
for i in 1...100 {
if i * i == number {
var Root = i
break
}
return Root
}
return Root
}
print(rooting(number: 9))
问题是您在尝试使用变量之前结束的范围内创建 Root
变量。本质上,Root
变量仅存在于以下段中:
import Foundation
func rooting(number: Int) -> Int {
for i in 1...100 {
if i * i == number {
var Root = I //Root variable starts existing
break
} //Root variable no longer exists
return Root
}
return Root
}
print(rooting(number: 9))
这是因为它 范围 到 if
语句。要解决这个 特定的 问题,您可以将代码更改为:
import Foundation
func rooting(number: Int) -> Int {
for i in 1...100 {
if i * i == number {
return i
}
}
}
print(rooting(number: 9))
因为除了 return 之外,您没有对 Root
做任何事情。当然,这仍然行不通,因为你不能保证 return 任何东西(如果 number
是 8 怎么办?),而且你说函数总是 return 一个Int
.
这是一个实现生根功能的简单示例:
import Foundation
func rooting(number: Int) -> Int? {
guard number > 0 else { return nil }
for i in 0...(number/2) {
if i * i == number {
return i
}
}
return nil
}
print(rooting(number: 9))
如果数字有平方根,它将被return计算;否则,函数 returns nil
.