<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум компьютерной помощи &mdash; Повторы и рекурсии]]></title>
	<link rel="self" href="https://itpmr.ru/extern.php?action=feed&amp;tid=757&amp;type=atom" />
	<updated>2012-12-24T13:46:12Z</updated>
	<generator>PunBB</generator>
	<id>https://itpmr.ru/viewtopic.php?id=757</id>
		<entry>
			<title type="html"><![CDATA[Повторы и рекурсии]]></title>
			<link rel="alternate" href="https://itpmr.ru/viewtopic.php?pid=123820#p123820" />
			<content type="html"><![CDATA[<p>№ 4.6.<br />Даны натуральное n, действительное x. Вычислить:</p><p>%S=sin(x)+sin(sin(x))+sin(sin(sin(x)))... Rekursivnii<br />predicates<br />&nbsp; &nbsp; sum(integer,real,real,real)&nbsp; &nbsp; <br />clauses<br />&nbsp; &nbsp; sum(0,X,Y,0):- Y=sin(X),!.<br />&nbsp; &nbsp; sum(N,X, SY, Sum):-&nbsp; &nbsp; NewN=N-1,&nbsp; &nbsp; sum(NewN,X,NewSY,NewSum),<br />&nbsp; &nbsp; &nbsp; &nbsp; SY=sin(NewSY),&nbsp; &nbsp; Sum=NewSum+NewSY.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />goal<br />&nbsp; &nbsp; N=3,&nbsp; &nbsp; X=2, &nbsp; &nbsp; sum(N, X, _, Sum).<br />%S=sin(x)+sin(sin(x))+sin(sin(sin(x)))... Iteracionii<br />predicates<br />&nbsp; &nbsp; ryad(integer, real, real, real)<br />&nbsp; &nbsp; ryad(integer, real, real, real,integer, real, real, real)<br />&nbsp; &nbsp; do<br />clauses<br />&nbsp; &nbsp; ryad(N, X, Y, Sum):-&nbsp; &nbsp; &nbsp; ryad(N,X, SinX, Sum, 1, X, Y, Y).<br />&nbsp; &nbsp; ryad(N,X, SinX, Sum,N,X, SinX, Sum):-!.<br />&nbsp; &nbsp; ryad(N,X, SinX, Sum, I, X, Sin, NewSum):-<br />&nbsp; &nbsp; &nbsp; &nbsp; NewI=I+1,&nbsp; NewSin=sin(Sin),&nbsp; &nbsp;NSum=NewSum+NewSin,<br />&nbsp; &nbsp; &nbsp; &nbsp; ryad(N,X, SinX, Sum, NewI, X, NewSin, NSum).<br />&nbsp; &nbsp; do:-&nbsp; &nbsp;write(&quot;Enter\n&quot;),&nbsp; readint(N),&nbsp; &nbsp;readreal(X),&nbsp; Y=sin(X),&nbsp; &nbsp; &nbsp; ryad(N,X,Y,Sum),&nbsp; &nbsp; &nbsp; write(&quot;\n&quot;,Sum,&quot;\n&quot;).<br />goal<br />&nbsp; &nbsp; do.<br />№ 4.16.<br />Дано натуральное число n. Вычислить:<br />S=1!+2!+3!+…+n! (n&gt;1)<br />%S=1!+2!+3!+4!+...+n! (n&gt;1) Rekyrsivnii&nbsp; &nbsp; <br />predicates<br />&nbsp; &nbsp; f(integer, integer)<br />&nbsp; &nbsp; sum(integer,integer)<br />clauses<br />&nbsp; &nbsp; f(1, 1) :- !.<br />&nbsp; &nbsp; f(FactX,X) :-&nbsp; Y=X-1,&nbsp; f(FactY, Y),&nbsp; FactX = X*FactY.<br />&nbsp; &nbsp; sum(1, 1) :- !.<br />&nbsp; &nbsp; sum(N,S):-&nbsp; NewN=N-1,&nbsp; &nbsp; &nbsp; sum(NewN,NewS),&nbsp; f(L,N),&nbsp; S=L+NewS.<br />goal<br />&nbsp; &nbsp; N=3,&nbsp; &nbsp; &nbsp; sum(N, S).&nbsp; <br />%S=1!+2!+3!+4!+...+n! (n&gt;1) Iteracionnii<br />predicates<br />&nbsp; &nbsp; f(real, real)<br />&nbsp; &nbsp; f(unsigned, long, unsigned, long)<br />&nbsp; &nbsp; sum(integer,real)<br />&nbsp; &nbsp; sum(integer,real,integer,real)<br />clauses<br />&nbsp; &nbsp; f(N, FactN) :-&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; f(N, FactN, 1, 1). <br />&nbsp; &nbsp;&nbsp; &nbsp; f(N, FactN, N, FactN) :- !.<br />&nbsp; &nbsp;&nbsp; &nbsp; f(N, FactN, I, P) :- NewI = I+1, NewP = P*NewI,&nbsp; f(N, FactN, NewI, NewP).<br />&nbsp; &nbsp; sum(N,Sum):-sum(N,Sum,1,1).<br />&nbsp; &nbsp; sum(N,Sum,N,Sum):-!.<br />&nbsp; &nbsp; sum(N,Sum,L,S):-L1=L+1,f(L1,P),NewS=S+P,sum(N,Sum,L1,NewS).&nbsp; &nbsp; <br />goal<br />&nbsp; &nbsp; X=3, <br />&nbsp; &nbsp; sum(X, FX).</p>]]></content>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2012-12-24T13:46:12Z</updated>
			<id>https://itpmr.ru/viewtopic.php?pid=123820#p123820</id>
		</entry>
</feed>
