<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Форум компьютерной помощи &mdash; Повторы и рекурсии]]></title>
		<link>https://itpmr.ru/viewtopic.php?id=757</link>
		<atom:link href="https://itpmr.ru/extern.php?action=feed&amp;tid=757&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Повторы и рекурсии».]]></description>
		<lastBuildDate>Mon, 24 Dec 2012 13:46:12 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Повторы и рекурсии]]></title>
			<link>https://itpmr.ru/viewtopic.php?pid=123820#p123820</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (admin)]]></author>
			<pubDate>Mon, 24 Dec 2012 13:46:12 +0000</pubDate>
			<guid>https://itpmr.ru/viewtopic.php?pid=123820#p123820</guid>
		</item>
	</channel>
</rss>
