作者james1022jk (雁)
看板MATLAB
标题Re: [发问]请问关於回圈的题目
时间Thu Dec 13 10:37:59 2012
※ 引述《Silent50286 ()》之铭言:
: 题目是:
: 要完成排列组合C(n,k),并起使用者输入n及k,
: 若n及k 为非整数或负数时,请使用者重新输入,直到n及k为合理。
: 小妹我写出来是这样:
: n=input('请输入n :'); %请输入n值
: k=input('请输入k :'); % 输入k值
: while x==100
: if n<0||~isinteger(n)||k<0||~isinteger(k) %如果n及k为非整数或负数时
: n=input('请输入n :'); %再输入一次n值
: k=input('请输入k :'); %再输入一次k值
: end
: end
: fprintf('%d\n',factorial(n)/(factorial(k)* factorial(n-k))) %计算C(n,k)答案
: --------
: 我在测试时输入 n及k 是负数或非整数,
: 回圈好像跑不出来,是不是写错了呢?
: 请各位大大指教 !! 感谢
刚没仔细看判别式...多亏楼上那位有说明,还有依你的计算方式,
要多加入n是否大於等於k的判别式,因为factorial要代入正整数
while 1
n=input('请输入n :'); %请输入n值
k=input('请输入k :'); % 输入k值
if (n<0 || (n/ceil(n))~=1 || k<0 || (k/ceil(k))~=1) || (n<k)
disp('--------- 请再次输入 ---------);
continue;
else
break;
end
end
fprintf('%d\n',factorial(n)/(factorial(k)* factorial(n-k)))
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.38.5.153
※ 编辑: james1022jk 来自: 114.38.5.153 (12/13 11:26)
1F:推 Silent50286:我了解了 感谢解答 !! 12/15 00:45