Golang 示例 - 计算一个整数的位数之和教程

379 阅读2分钟

在这篇文章中,你将学习在Golanguage中对数字进行加法的不同方法

  • 使用迭代函数
  • 使用递归函数

数字的位数之和是指检索一个数字的每个位数并将这些数字相加的结果。例如,如果给定的数字是154,数字的位数之和是1+5+4=10。

要理解这个例子,你应该具备Go语言的以下特点

示例程序 - 使用模数运算符的数字之和

在下面的程序中,从用户键盘控制台读取输入的数字,并将其存储在变量数字中。

使用for循环遍历数字的每个数字,直到条件(number!=0)为假,即数字为0。

使用模数运算器获取给定数字的余数,并将其添加到sumResult中。这将继续执行,直到以10为基数的除数为零。

下面是一个使用for循环计算整数位数相加的程序

package main  
  
import (  
 "fmt"  
)  
  
func sumDigits(number int) int {  
 remainder := 0  
 sumResult := 0  
 for number != 0 {  
  remainder = number % 10  
  sumResult += remainder  
  number = number / 10  
 }  
 return sumResult  
}  
func main() {  
 var number int  
 fmt.Print("Enter Number:")  
 fmt.Scanln(&number)  
 fmt.Printf("Addition digits of %d = %d\n", number, sumDigits(number))  
  
}  

当上述程序被执行时,输出为

Enter Number:2535  
Addition digits of 2535 = 15  

例如,如果给定的输入是2535,变量sumResult最初是0

循环这个数字,在For循环中
2535%10=5 模数运算符%给出余数
sumResult=sumResult+余数(0+5)。sumResult=5 现在
2535/10=235 即数字235
235%10=5
sumResult=sumResult+5 即5+5=10, 所以 sumResult=10 现在
235/10=23 即数字23
23%10=3
sumResult=sumResult+3 即10+3=13,所以sumResult=13 现在
23/10=3 即数字2
2%10=2
sumResult=sumResult+2 即13+2=15, 所以sumResult=15 现在
0/10=0 即数字0
数字为0,for循环的条件表达式为假,循环终止执行

示例程序 2 使用递归函数计算数字之和

在这个程序中,它从键盘终端接收用户的输入,并将其存储在变量数字中。

宣告递归函数,递归是一个在函数内部调用的函数。

最初,递归函数从主函数中调用。

以下是计算数字的递归步骤

例如,如果给定的数字是67845

recursiveSumDigits(67845) - sumResult=0

--recursiveSumDigits(6784) --sumResult=0+5

--递归SumDigits(678) --sumResult=5+4

-递归SumDigits(67) - sumResult=9+8

-递归数位(6) - sumResult=17+7

-recursiveSumDigits(0) - sumResult=24 +6=30被返回。

package main  
  
import (  
 "fmt"  
)  
  
func recursiveSumDigits(number int) int {  
 sumResult := 0  
 if number == 0 {  
  return 0  
 }  
 sumResult = number%10 + recursiveSumDigits(number/10)  
 return sumResult  
}  
  
func main() {  
 var number int  
 fmt.Print("Enter Number:")  
 fmt.Scanln(&number)  
 fmt.Printf("Addition digits of %d = %d\n", number, recursiveSumDigits(number))  
  
}  

输出是

Enter Number:67845  
Addition digits of 67845 = 30