JS如何解决多层嵌套

举个例子:varstr='a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z';用str生成n位字符串,不重复举个栗子... 举个例子:
var str = 'a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z';
用 str 生成 n 位字符串,不重复

举个栗子:生成4位字符串

aaaa,aaab,aaac,aaad...
aaba,aabb,aabc,aabd...
abaa,abab,abac,abad...
baaa,baab,baac,baad...
....
zzya,zzyb,zzyc,zzyd...
zzza,zzzb,zzzc,zzzd...zzzw,zzzx,zzzy,zzzz

用 for 循环要4层,如何用递归或其它方法解决?
展开
 我来答
zzllrr小乐
高粉答主

2015-09-01 · 小乐图客,小乐数学,小乐阅读等软件作者
zzllrr小乐
采纳数:20147 获赞数:78762

向TA提问 私信TA
展开全部
4位字符串,共有A₂₆⁴种排列。
提供递归的思路:

var str = 'a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z', arr=str.split(','), strA=[];
var PermutN=function(n,m){//生成排列数索引 (从n个数中选择m个)
var t=[],ms=[],mstr;

if(n==1){
if(m==0){t=[]}
if(m==1){t=[0]}
return t
}
if(m==0){
return []
}
if(m==1){
return 自然序列数组
}
for(var i=0;i<n;i++){
var s=PermutN(n-1,m-1);
t.push(对s进行拼接);
}
return t

}
var P=PermutN(26,4);
for(var i=0;i<P.length;i++){

var Pi=P[i],ps='';

for(var j=0;j<4;j++){

ps+=arr[j]
}
strA.push(ps)
}
return strA
吉他手_vai
推荐于2018-05-11 · TA获得超过223个赞
知道小有建树答主
回答量:331
采纳率:25%
帮助的人:340万
展开全部

var chars = "abcdefghijklmnopqrstuvwxyz".split("");
var char="";
var res = [];
var first2=[];
var last2=[];
for(var i = 0,j=0 ; i <chars.length;){
char=chars[i];
j++;
while (j % 2) {
j++;
first2.push(chars[i] + chars[(j-1)%chars.length]);
last2.push(chars[(j-1)%chars.length] + chars[i]);
first2.push(chars[i] + chars[j%chars.length]);
last2.push(chars[j%chars.length] + chars[i]);

}
if(((j/2)%(chars.length+1))==chars.length)i++;

}

first2.push("zz");
first2.unshift("aa")
last2.push("aa")
last2.unshift("zz");

for(var k = 0,j; k<first2.length;k++){
j=0;
while (j < first2.length) {
console.log(first2[k] + last2[j++])
}
}

我的思路是分拆成两组字符串

例如 aa , zz

ab , zy

ac , zx

一个顺序一个倒序,思路是2*2的对称矩阵

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
woshidaniel
2015-09-01 · TA获得超过9241个赞
知道小有建树答主
回答量:1760
采纳率:96%
帮助的人:939万
展开全部
每种都要生成且不重复,就用for循环吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式