Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

发一段Mathematica程序代码

Posted by Krizalid at 2005-06-27 15:09:46 on Problem 2427
已经接近完美了,循环的判断条件的最后一个是多余的,为的是不让最后输出时因递归深度过大而跳出。怎样设置递归深度无限?

\!\(Pell[D_Integer] := Which[IntegerQ[\@D] == 
    True, "\<No 
      Solution!\>", IntegerQ[\@D] == False, \((Module[{a, P, Q, p, q}, {P[1] \
= 0; \[IndentingNewLine]Q[1] = 1; \[IndentingNewLine]a[1] = IntegerPart[\@D]; \
\[IndentingNewLine]P[2] = a[1]; \[IndentingNewLine]Q[2] = D - a[
            1]\^2; \[IndentingNewLine]P[n_Integer] := \(P[n] = a[n - 1]*Q[n - 
            1] - P[n - 
            1]\); \[IndentingNewLine]Q[n_Integer] := \(Q[n] = \(D - P[n]\^2\)\
\/Q[n - 1]\); \[IndentingNewLine]a[n_Integer] := \(a[n] = IntegerPart[\(a[1] +
             P[n]\)\/Q[
            n]]\); \[IndentingNewLine]q[1] = 1; \[IndentingNewLine]p[1] = a[
            1]; \[IndentingNewLine]q[
            2] = a[2]; \[IndentingNewLine]p[2] = a[2]*a[1] + 
                1; \[IndentingNewLine]p[n_Integer] := \(p[n] = a[n]*p[n - 1] +
                 p[n - 2]\); \[IndentingNewLine]q[
            n_Integer] := \(q[n] = a[n]*q[n - 1] + q[
              n - 2]\); \[IndentingNewLine]For[i = 1, \((Q[i + 1] ≠ 1 || \
IntegerQ[i\/2] == False)\) && p[i] ≠ q[
            i], \(i++\)]; \[IndentingNewLine]x -> p[i], y -> 
              q[
                i]\[IndentingNewLine]}\[IndentingNewLine]]\[IndentingNewLine])\
\)\[IndentingNewLine]]\)

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator