找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 515|回复: 8
打印 上一主题 下一主题
收起左侧

以简洁代码提高阶乘效率

[复制链接]
跳转到指定楼层
楼主
LONG64 双阶乘(int a)
{//以简洁代码提高阶乘效率
if (a < 0)return -1; // 表示输入错误
LONG64 aaa = 1;
int aa = 0;
sjc:if (a > 2 && ++aa < a - aa)
{
aaa *= (a - aa) * aa;
goto sjc;
}
if (aa == a - aa)
aaa *= aa;
return aaa * a;
}
————————————————
版权声明:本文为CSDN博主「智者知已应修善业」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xianfajushi/article/details/121282065
作者在 2026-09-13 11:44:32 补充以下内容
if (aaa * a > LLONG_MAX)
{  // 处理溢出,例如返回 -1 表示错误   return -1;  }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶顶 踩踩
回复

使用道具 举报

沙发
ID:332444 发表于 2026-9-13 16:54 | 只看该作者
该优化算法可实现20阶乘


回复

使用道具 举报

板凳
ID:353115 发表于 2026-9-14 16:23 | 只看该作者
不如弄个常量数组
回复

使用道具 举报

地板
ID:332444 发表于 2026-9-15 08:29 | 只看该作者
说实话,设计这个程序就是为了击破AI,果然AI胡诌,如我预想一样,从构思、分析、编写、调试,一气呵成不多花费时间、精力就完成创作。
AI目前不具备自主分析能力,只能鹦鹉学舌,即人工解读我的代码录入数据库中,之后再检索。之乎者也学会了才好摇头晃脑壳。
回复

使用道具 举报

5#
ID:332444 发表于 2026-9-15 08:31 | 只看该作者
qsssuv 发表于 2026-9-14 16:23
不如弄个常量数组

使用数组的阶乘早就发布过,这个就是为优化特意写的。
回复

使用道具 举报

6#
ID:332444 发表于 2026-9-15 08:33 | 只看该作者
回复

使用道具 举报

7#
ID:332444 发表于 2026-9-15 10:20 | 只看该作者
qsssuv 发表于 2026-9-14 16:23
不如弄个常量数组

用什么类型常量?又存储到多少阶乘?是否要转换后才能参与运算?
回复

使用道具 举报

8#
ID:332444 发表于 2026-9-21 10:38 | 只看该作者
3,1+2
4,1+3,2-2
5,1+4,2+3
6,1+5,2+4,3-3
7,1+6,2+5,3+4,2-2
回复

使用道具 举报

9#
ID:592807 发表于 2026-10-9 11:28 | 只看该作者
sjc:if (a > 2 && ++aa < a - aa) { aaa *= (a - aa) * aa; goto sjc; }这里不是可以用循环吗?为啥要用GOTO语句,看的蒙蒙的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表