缩位求和(迭代,递归)
题目描述
在电子计算机普及以前,人们经常用一个粗略的方法来验算四则运算是否正确。 比如: 248 x15 =3720 把乘数和被乘数分别逐位求和,如果是多位数再逐位求和,直到是1位数,得 2+4+8=14==>1+4=5; 1+5=6; 5x6 而结果逐位求和为3。 5x6的结果逐位求和与3符合,说明正确的可能性很大!! (不能排除错误) 请你写一个计算机程序,对给定的字符串逐位求和。
输入描述
输入为一个由数字组成的串,表示n(n<1000)位数
输出描述
输出为一位数,表示反复逐位求和的结果
MyCode
递归算法:递归算法是一种通过将问题分解为更小的子问题来解决问题的方法。在递归算法中,函数会调用自身来解决子问题,直到达到基本情况(base case)为止。递归算法通常具有简洁的代码,但可能会导致栈溢出等问题。
迭代算法:迭代算法是一种通过重复执行一系列操作来解决问题的方法。在迭代算法中,不需要使用递归调用,而是通过循环结构来实现。迭代算法通常具有较好的性能,但可能需要更多的代码来实现相同的功能。
迭代写法:
1 |
|
这段代码实现了一个迭代算法,用于计算一个数字的各个位数之和,直到结果为一位数为止。首先,将输入的数字转换为字符串,然后遍历字符串中的每个字符,将其转换为整数并累加到结果中。最后,当结果为一位数时,输出结果。
递归写法:
1 |
|
这段代码实现了一个递归算法,用于计算一个数字的各个位数之和,直到结果为一位数为止。首先判断输入的数字是否只有一位,如果是,则直接返回该数字;否则,将输入的数字转换为字符串,遍历字符串中的每个字符(即数字的每一位),将其转换为整数并累加到结果中。然后,将累加得到的结果作为参数,再次调用递归函数进行求和操作。这样,每次递归都会将数字的各个位数相加,直到结果只剩下一位数为止。最后,输出最终的结果。