당신이보고있는 것은 256에 함수 반환 값의 둘러보기입니다. 720 mod 256
은 208
(256 + 256 + 208 = 720
)입니다. 이것은 오히려 반환 코드보다 값을 반환하는 표준 출력을 사용
#!/bin/bash
fact()
{
if [ "$1" -eq "1" ]
then
echo 1
return
fi
y=`expr $1 - 1`
z=$(fact $y)
echo $(($1 * $z))
}
echo "enter"
read n
echo "$(fact $n)"
: 당신이 쉘 기능을 사용해야하는 경우
내 조언은,하는 것입니다.
또는 더 나은, 작업의 바로 도구를 사용
이
pax> echo 'define f(x) {if (x>1){return x*f(x-1)};return 1}
f(6)' | bc
720
pax> echo 'define f(x) {if (x>1){return x*f(x-1)};return 1}
f(500)' | BC_LINE_LENGTH=99999 bc
12201368259911100687
45373153881997605496447502203281863013616477148203584163378722078177
20048078520515932928547790757193933060377296085908627042917454788242
49127263443056701732707694610628023104526442188787894657547771498634
94367781037644274033827365397471386477878495438489595537537990423241
06127132698432774571554630997720278101456108118837370953101635632443
29870295638966289116589747695720879269288712817800702651745077684107
19624390394322536422605234945850129918571501248706961568141625359056
69342381300885624924689156412677565448188650659384795177536089400574
52389403357984763639449053130623237490664450488246650759467358620746
37925184200459369692981022263971952597190945217823331756934581508552
33282076282002340262690789834245171200620771464097945611612762914595
12372299133401695523638509428855920187274337951730145863575708283557
80158735432768888680120399882384702151467605445407663535984174430480
12893831389688163948746965881750450692636533817505547812864000000000
00000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000
나는 bash
를 전용 솔루션은 500 :-)
가능한 중복의 계승을 계산보고 싶어요 [Bash 스크립트에서 숫자의 계승을 어떻게 찾을 수 있습니까?] (http://stackoverflow.com/questions/3394580/how-do-you-find-the-factorial-of-a-number-in- a-bash-script) –