标题:看到一道有意思的题:累加求和,不能用乘除、if,for,while,case,等及条件语 ...
只看楼主
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册: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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-458549-1-1.html




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

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