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层,如何用递归或其它方法解决? 展开
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层,如何用递归或其它方法解决? 展开
展开全部
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
提供递归的思路:
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
展开全部
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的对称矩阵
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
每种都要生成且不重复,就用for循环吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询