社区
C++ 语言
帖子详情
编写一个递归函数求数字和?拜托大侠们了
studyingpersons
2007-08-05 10:26:40
如题,3445,fun(3445)=3+4+4+5=16,fun(16)=1+6=7,其中这个fun是递归函数,不允许用库函数。
...全文
761
29
打赏
收藏
编写一个递归函数求数字和?拜托大侠们了
如题,3445,fun(3445)=3+4+4+5=16,fun(16)=1+6=7,其中这个fun是递归函数,不允许用库函数。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
29 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zhanghao0722
2008-08-29
打赏
举报
回复
还是一楼的好
zhanghao0722
2008-08-29
打赏
举报
回复
int AddNumbers(int n)
{
if(n/10==0)
{
return n;
}
else
{
int num=1;
int num2=n;
while(num2/10)
{
num*=10;
num2/=10;
}
return AddNumbers(n-num2*num)+num2;
}
}
neujie
2007-08-06
打赏
举报
回复
哈哈,我感觉大家的力量是伟大的,很不错
一个人考虑的是不完善的,多个人一起来讨论,就可以得到好的程序了
阿发伯
2007-08-05
打赏
举报
回复
我的那个函数简化一下,可以是:
return v > 10 || v < -10? v % 10 + fun(v / 10) : v;
不过,iambic()的
return n < 0 ? -fun(-n) : ( n < 10 ? n : n%10+fun(n/10 ) );
构思似乎更精巧!
Vitin
2007-08-05
打赏
举报
回复
根据题目的要求, fun(n/10) 应放在 n%10 的左边。所以我觉得 tiantang3gm 的答案最精确。
当然对int而言,加法具有交换性。所以,如果LZ是指int的话,其他答案也正确。
阿发伯
2007-08-05
打赏
举报
回复
呵呵,没注意
iambic
2007-08-05
打赏
举报
回复
我前面不是发了么:
if(v < 0)
return -fun(-v);
阿发伯
2007-08-05
打赏
举报
回复
如果考虑负数,是否应该这样写:
int fun(int v)
{
return v < 0? (v > -10? v : v % 10 + fun(v / 10))
: (v < 10? v : v % 10 + fun(v / 10));
}
iambic
2007-08-05
打赏
举报
回复
也不复杂,多一条语句而已。
阿发伯
2007-08-05
打赏
举报
回复
如果考虑负数,函数就复杂些了
阿发伯
2007-08-05
打赏
举报
回复
循环求和:
int fun(int n)
{
int v = 0;
for (; n > 0; v += n % 10 + (n % 100) / 10, n /= 100);
return v;
}
iambic
2007-08-05
打赏
举报
回复
我之所以用n <= 0是考虑到负数的情况。
而如Kenmark的代码:
int fun(int n)
{ return (n < 10 ? n : n % 10 + fun(n / 10)); }
在n = -12的情况下返回-12,我觉得这不是个很合理的答案。合理的应该是返回0或者-3。
我之前用的是前一种设定,当然若换为后一种也很容易:
int fun(int n)
{
return n < 0 ? -fun(-n) : ( n < 10 ? n : n%10+fun(n/10 ) );
}
其实再想一想,返回0好像也不是很合理……
阿发伯
2007-08-05
打赏
举报
回复
if (n <= 0) 比 if (n < 10) 多了一次递归调用。
我啃
2007-08-05
打赏
举报
回复
int fun(int n)
{ return (n < 10 ? n : n % 10 + fun(n / 10)); }
少了一个括号
yydrewdrew
2007-08-05
打赏
举报
回复
用循环实现:
#include <iostream>
#include <cassert>
using namespace std;
int fun(int n)
{
assert( n >= 0);
int a = 0;
do
{
a += n%10;
n /= 10;
}
while(n/10 != 0);
return a + n;
}
int main()
{
int a;
cin>>a;
cout<<fun(a)<<endl;
}
小一郎
2007-08-05
打赏
举报
回复
int fun(int n)
{
if(n <= 0)
return 0;
else
return n%10 + fun(n/10);
}
MPTD_Fire
2007-08-05
打赏
举报
回复
我也来分点
哈哈...
iambic() 没问题吧?
我啃
2007-08-05
打赏
举报
回复
int fun(int n)
{ return (n < 10 ? n : n % 10 + fun(n / 10); }
阿发伯
2007-08-05
打赏
举报
回复
更简洁:
int fun(int v)
{
return v < 10? v : v % 10 + fun(v / 10);
}
阿发伯
2007-08-05
打赏
举报
回复
int fun(int v)
{
if (v < 10)
return v;
return v % 10 + fun(v / 10);
}
加载更多回复(9)
递归入门、递归遍历、递归穷举算法
本课程带你从递归算法基础入手,课程是精讲大量实际项目中常用到的案例,课程深入浅出,包括递归入门,递归遍历、弟归穷举算法及各种项目,适合算法爱好者一起学习,后附每堂课项目源码,感兴趣可以观注博客,不定期...
什么是
递归函数
?
递归函数
递归 例题 特点 效率 优点 ...
递归函数
...递归 ...递归就是
一个
函数在它的函数体内调用它自身。执行
递归函数
将反复调用其...递归的时候,每次调用
一个
函数,计算机都会为这个函数分配新的空间,这就是说,当...
编写
一个
递归函数
、计算下面的级数python_关于面试总结5-python笔试题(递归)
前言本篇继续收集一些常见的python笔试题,以基础知识为主,递归是面试最喜欢考的
一个
问题,不管是做开发还是测试,都无法避免考递归。本篇结合实际案例,讲下几种关于递归的场景。计算n的阶乘计算n!,例如n=3(计算...
递归函数
的
编写
方法
递归函数
的
编写
步骤 1.找到并设置迭代单体 2.设置结束条件 3.编程实现
递归函数
简单来说是一种自身调用自身的函数。
递归函数
可用于需要重复操作的程序,如绘制分形树,下面将以分形树绘制作为
递归函数
的实例,...
python
编写
递归函数
m(i)计算以下级数_20171127-python学习笔记--
递归函数
#
递归函数
#感觉这里不明白的是什么是
递归函数
#看了一些教程,就是def 函数的过程中,def 函数名: 这个函数名你在下面的代码里用到了它的功能#就是
递归函数
def hanshu(n):return (n + hanshu(n))#上面这个函数直接报...
C++ 语言
64,637
社区成员
250,559
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章