使循环次数达到n的阶乘次

zedzhao 2009-02-21 05:16:53
如题,
有没有办法用尽量少的循环语句使循环次数达到n!?
使执行次数达到 n!次?
不是计算阶乘的问题。
...全文
213 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ysysbaobei 2009-02-23
  • 打赏
  • 举报
回复
fengcman 2009-02-21
  • 打赏
  • 举报
回复
可以使用一个while循环来实现,说下大概思路

int j=x; //x只是一个数的代表
while(n--)
{
。。。
。。。
if(n==0)
{
n=j;
j--;
}
}
iambic 2009-02-21
  • 打赏
  • 举报
回复
排列组合算法STL中就有。自己下去看下吧。
arong1234 2009-02-21
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zedzhao 的回复:]
在做全排列的题目,
想把递归的改成用栈来做,思路有点乱,不过要全排列的话次数一定要达到n!。
[/Quote]
知道你想做什么了.你不过就是想把递归改为非递归,是用栈没错,但是感觉你是想多了点吧.看看这个帖子的讨论.
http://topic.csdn.net/t/20060710/14/4870771.html
zedzhao 2009-02-21
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;

typedef int ElemType;
#define N 4

void permute(ElemType *a, int size);
void rotate(ElemType *a, int size, int m)

int main()
{
int a[N] = {1,2,3,4};
permute(a,N);
}

void permute(ElemType *a , int size)
{
static int n = 0;



if(size ==0)
{
++n;
cout << " #" << n<< " :\t";
for(int i = 0 ; i < N ; ++i)
cout << a[i] << " ";
cout << endl;
}

for(int i = 0 ; i < size ; ++i)
{
permute(a,size-1);
cout <<"%%" << size<<endl; //想把这里的size全装在栈里 然后出栈顺序执行rotate()
rotate(a,N,size);
}
}



void rotate(ElemType *a, int size , int m)
{
ElemType tmp = a[size-m];

for(int i = size-m ; i < size - 1; ++i)
a[i] = a[i+1];
a[ size - 1 ] = tmp;
}



zedzhao 2009-02-21
  • 打赏
  • 举报
回复
在做全排列的题目,
想把递归的改成用栈来做,思路有点乱,不过要全排列的话次数一定要达到n!。
arong1234 2009-02-21
  • 打赏
  • 举报
回复
你这样做的目的到底是什么?只是为了增加循环次数毫无意义

[Quote=引用 3 楼 zedzhao 的回复:]
如果n大一点呢 只用一个循环的话要计算 n! 大一点就算不动了...
就是想不到非递归的方法。
[/Quote]
zedzhao 2009-02-21
  • 打赏
  • 举报
回复
如果n大一点呢 只用一个循环的话要计算 n! 大一点就算不动了...
就是想不到非递归的方法。
zedzhao 2009-02-21
  • 打赏
  • 举报
回复
如果n大一点呢 只用一个循环的话要计算 n! 大一点就算不动了...
就是想不到非递归的方法。
yuanhong2910 2009-02-21
  • 打赏
  • 举报
回复
那就只能用递归了,你连一个循环都不需要用
waizqfor 2009-02-21
  • 打赏
  • 举报
回复
[Quote=引用楼主 zedzhao 的帖子:]
如题,
有没有办法用尽量少的循环语句使循环次数达到n!?
使执行次数达到 n!次?
不是计算阶乘的问题。
[/Quote]
没理解LZ说的 一个循环就能完成N阶乘的效果啊

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧