计算整数位数的Golang例子

368 阅读2分钟

本例包括两个计算整数位数的程序,第一个程序使用迭代函数,第二个程序使用递归函数。
要理解这个例子,你应该具备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