“求数字之和的三种算法”的版本间的差异
跳到导航
跳到搜索
Jihongchang(讨论 | 贡献) |
Jihongchang(讨论 | 贡献) (→第二种) |
||
第3行: | 第3行: | ||
=== 题目 === | === 题目 === | ||
例如:1234→1+2+3+4=10 | 例如:1234→1+2+3+4=10 | ||
+ | |||
+ | |||
=== 第一种 === | === 第一种 === | ||
第26行: | 第28行: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | |||
=== 第二种 === | === 第二种 === | ||
− | 递归 | + | 递归<syntaxhighlight lang="cpp"> |
+ | #include<stdio.h> | ||
+ | |||
+ | int f(int n) | ||
+ | { | ||
+ | if (n == 0) { | ||
+ | return 0; | ||
+ | } | ||
+ | return n % 10 + f(n / 10); | ||
+ | } | ||
+ | |||
+ | int main() { | ||
+ | int a = 1234; | ||
+ | int ret = f(a); | ||
+ | printf("ret = %d \n", ret); | ||
+ | return 0; | ||
+ | } | ||
+ | </syntaxhighlight> |
2022年11月9日 (三) 06:44的版本
https://www.bilibili.com/video/BV1Ra4y1p7Si
题目
例如:1234→1+2+3+4=10
第一种
while 循环
#include<stdio.h>
int f(int n)
{
int ret = 0;
while (n > 0)
{
ret = ret + (n % 10);
n = n / 10;
}
return ret;
}
int main() {
int a = 1234;
int ret = f(a);
printf("ret = %d \n", ret);
return 0;
}
第二种
递归
#include<stdio.h>
int f(int n)
{
if (n == 0) {
return 0;
}
return n % 10 + f(n / 10);
}
int main() {
int a = 1234;
int ret = f(a);
printf("ret = %d \n", ret);
return 0;
}