本例包括两个计算整数位数的程序,第一个程序使用迭代函数,第二个程序使用递归函数。
要理解这个例子,你应该具备Go语言的以下特点
两个程序都从用户的键盘上读取一个整数值,并找出其中的数字。例如,如果用户输入的数字是245,这些程序的结果就是3。
示例程序 - 使用迭代函数计算整数的位数
该程序从用户控制台获取输入的整数,并将其存储在变量number中,使用For Loop来迭代数字,直到条件(number !=0)为假,即number=0
对于输入数字=456,迭代函数执行一系列的步骤
- 一旦for循环的第一次迭代完成,数字将是45,计数将增加1,count=1
- 第二次迭代完成后,数字将是4,计数增加1,即count=2
- 第三次迭代完成后,数字将是0,计数增加1,即count=3。
- For循环的条件表达式被评估为false(number=0),For循环被终止了
- 计数被返回到主函数
最后,使用主函数中的Println函数将计数打印到控制台。
package main
import "fmt"
func iterativeDigitsCount(number int) int {
count := 0
for number != 0 {
number /= 10
count += 1
}
return count
}
func main() {
number := 0
fmt.Print("Please enter number: ")
fmt.Scanln(&number)
fmt.Printf("Digits count of %d is %d", number, iterativeDigitsCount(number))
}
当你运行上述程序时,输出为
Please enter number: 456
Digits count of 456 is 3
Please enter number: 2
Digits count of 2 is 1
示例程序 - 使用递归函数计算整数的位数
递归函数是一个在同一函数内调用的函数
以下是输入数字=2546的递归函数执行流程
recursionCountDigits(2546)
-- 1+ recursionCountDigits(254)
- 2+ recursionCountDigits(25)
- 3+ recursionCountDigits(2)
- 3+ 1返回4给主函数
下面是一个递归函数的例子,用于计算一个数字的位数
package main
import "fmt"
func main() {
number := 0
fmt.Print("Please enter number: ")
fmt.Scanln(&number)
fmt.Printf("Digits count of %d is %d", number, recursionCountDigits(number))
}
func recursionCountDigits(number int) int {
if number < 10 {
return 1
} else {
return 1 + recursionCountDigits(number/10)
}
}
输出是
Please enter number: 2546
Digits count of 2546 is 4
Please enter number: 456789
Digits count of 456789 is 6