| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2193 人关注过本帖
标题:看到一道有意思的题:累加求和,不能用乘除、if,for,while,case,等及条件语 ...
只看楼主 加入收藏
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 10楼 孤狼A组
vc60 该淘汰就淘汰吧  不要舍不得

DO IT YOURSELF !
2015-10-28 14:05
wfoo
Rank: 3Rank: 3
等 级:论坛游侠
威 望:7
帖 子:120
专家分:134
注 册:2011-8-6
收藏
得分:0 
有意思的题目,
int fun(int n) /* n 必须为正数  */
{
  return (n == 1) ||
         n + fun (n-1) ;
}
应该可以吧。其实这种题目用函数式写更清楚,n 必须非负
fun 0 = 0
fun n = n + fun (n-1)
2015-10-28 17:06
wfoo
Rank: 3Rank: 3
等 级:论坛游侠
威 望:7
帖 子:120
专家分:134
注 册:2011-8-6
收藏
得分:0 
程序代码:
fun x | x < 0   = - fun (-x)
      | x == 0  = 0
      | x > 0   = x + fun (x-1)

这个函数式的代码比较完善。
2015-10-28 17:15
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
这代码是在知乎上复过来的,利用逻辑短路真的非常巧妙!12楼也是用逻辑短路,但没得到正确结果。
#include <stdio.h>
int f(int n)
{
  n && (n += f(n - 1));
  return n;
}
void main ()
{
  printf("%d\n", f(100));
}

[此贴子已经被作者于2015-10-28 21:04编辑过]


能编个毛线衣吗?
2015-10-28 20:53
wfoo
Rank: 3Rank: 3
等 级:论坛游侠
威 望:7
帖 子:120
专家分:134
注 册:2011-8-6
收藏
得分:0 
确实我忽略了c语言中||  &&运算符会吧第2个表达式转为1,在表达式两边确实应该用两个赋值语句。
2015-10-28 22:23
wfoo
Rank: 3Rank: 3
等 级:论坛游侠
威 望:7
帖 子:120
专家分:134
注 册:2011-8-6
收藏
得分:0 
int fun(int n)
{
  int step = -1;
  n >= 0 || (step = 1);
  n == 0 || (n = fun (n+step));
  return n;
}
这种代码只有脚本中才会用到,代码没测试过,可能还是错的。
2015-10-28 23:24
wfoo
Rank: 3Rank: 3
等 级:论坛游侠
威 望:7
帖 子:120
专家分:134
注 册:2011-8-6
收藏
得分:0 
发完就发现错了,不改了,这个思路不管n为正或负都是可以的。
2015-10-28 23:28
pycansi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:418
专家分:1060
注 册:2012-7-26
收藏
得分:0 
不管什么实现方式,都必须暗含 if 的说


莫问前尘有愧,但求今生无悔
2015-10-28 23:47
wfoo
Rank: 3Rank: 3
等 级:论坛游侠
威 望:7
帖 子:120
专家分:134
注 册:2011-8-6
收藏
得分:0 
可以不要隐式if的,只要整数的位数确定的,乘法应该可以用位运算和加减法实现,除法可以用乘法实现。
2015-10-28 23:58
pycansi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:418
专家分:1060
注 册:2012-7-26
收藏
得分:0 
回复 19楼 wfoo
没有 if ,如何确定终止条件呢?


莫问前尘有愧,但求今生无悔
2015-10-30 00:10
快速回复:看到一道有意思的题:累加求和,不能用乘除、if,for,while,case,等及条 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029362 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved