在下面的代码中,我使用来定义一个返回第 n 个斐波那契数的sagetex
函数。我使用,这样函数的内容就不会被排版。然后我使用 调用并打印 的值。但是我收到警告,并且该值被替换为。为什么我明确定义了该值,但 latex 却找不到它?f(n)
sagesilent
f(10)
\sagestr
LaTeX Warning: There were undefined references.
??
\documentclass{article}
\usepackage{sagetex}
\begin{document}
\begin{sagesilent}
def f(n):
if n==1 or n==2:
return 1
else:
return f(n-1)+f(n-2)
\end{sagesilent}
$f(10)=\sagestr{f(10)}$
\end{document}
想要的输出:
f(10) = 55
实际产量:
f(10) = ??
答案1
我的回答有点离题。但是当我们有 TeX 时为什么要使用外部软件呢?
\def\fib#1{\ifnum\numexpr#1<3 1\else \the\numexpr \fib{#1-1}+\fib{#1-2}\relax\fi}
$f(10)=\fib{10}$
答案2
消息是LaTeX Warning: There were undefined references.
,结果??
为您的输出。由于您只调用过 Sage 一次,因此错误出现在以下行中:$f(10)=\sagestr{f(10)}$
。的参数 \sagestr
必须是字符串,例如“55”,而不是数字 55。由于您的函数输出的是您想要的数字$f(10)=\sage{f(10)}$
。更改代码显示它运行正常:
如果出于某种原因,您想保留该行,$f(10)=\sagestr{f(10)}$
那么您可以让函数返回字符串“55”。这可以通过使用str()
as in包装您的答案来实现return str(f(n-1)+f(n-2))
。
$\sage{f(10)}$
通过注意是55
但\sagestr{"f(10)"}
不是,数字和字符串输出之间的区别更加清晰f(10)
。